2015-07-19 81 views
0

我放棄瞭如何弄清楚如何向後打印數字來製作功能,但我仍然不太明白它是如何工作的。例如,爲什麼它向後打印數字,而不是爲了?需要說明功能如何在反向打印數字

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循環開始逐行解釋。我已經試過在我的頭腦和紙上進行追蹤,但無法掌握函數中的代碼。

+0

提示:'%'是模數(餘數)運算符。 :P – NightShadeQueen

+2

你不明白什麼?你知道'n%10'是什麼嗎?你知道'n = n/10'嗎? –

+3

嘗試以交互方式跟蹤它。輸入'python'啓動一個交互式Python解釋器。然後在那裏嘗試一下。例如,>>> >>> = 13789',然後看看>>> >>>%10'打印什麼。接下來是>>> >>> n = n/10,後面跟着>>> n來看看在這個語句之後會發生什麼。 –

回答

1

在循環的第一行中,'%'操作符將給定的數字設爲10並僅返回其餘的數字,表示除法的分數(25:10 = 2.5,因此它僅返回5! )。

然後,'n/10'這一行會完全反過來,並將逗號的左側部分存儲到變量本身中,因爲'/'運算符只返回逗號的左側部分。

總之,你可以說:

  1. N%10只返回divison
  2. N /其餘10 「拋出」 的分裂的其餘遠
  3. 代碼重複
0

%運算符返回除法的餘數。 (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,然後循環將停止。)