簡體   English   中英

需要說明功能如何反向打印數字

[英]Need explanation of how function works printing digits in reverse

我放棄了如何弄清楚如何向后打印數字的功能,但為此作弊,但我仍然不太了解它是如何工作的。 例如,為什么它向后打印數字而不是按順序打印?

def print_digits(n):
    """
      >>> print_digits(13789)
      9 8 7 3 1
      >>> print_digits(39874613)
      3 1 6 4 7 8 9 3 
      >>> print_digits(213141)
      1 4 1 3 1 2 
    """
    while n > 0:
        print n % 10
        n = n / 10 

我希望從while循環開始逐行進行解釋。 我已經嘗試過在我的頭上和紙上追蹤它,但是無法掌握函數中的代碼。

在循環的第一行中, '%'運算符將10給出的數字除以,然后僅返回其余數,表示除法的分數(25:10 = 2.5,因此僅返回5!)。

然后,行“ n / 10”正好相反,並將逗號的剩余部分存儲到變量本身中,因為“ /”運算符僅返回逗號的左邊部分。

簡而言之,您可以說:

  1. n%10僅返回其余的除法
  2. n / 10 “扔”除法師的其余部分
  3. 代碼重復

%運算符返回除法的余數。 (20%3 = 2,24%5 = 4)。 當您將數字除以10時,余數始終是最后一位。 例如123/10 = 12,余數為3。因此123%10 = 3。 在while循環內,當n大於0時,將打印n的最后一位。

並且由於線n = n / 10,所以n變為n / 10。 這里使用了整數除法,因此最終n的值將變為0,然后循環將停止(如果n最初是123,則n的值將變為123,12,1,0,然后循環將停止。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM