需要解释函数如何反向打印数字

时间:2015-07-19 02:54:51

标签: python python-2.7

我放弃了如何弄清楚如何向后打印数字为它做了一个功能,但我还是不太明白它是如何工作的。例如,为什么它向后打印数字而不是按顺序打印?

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循环开始逐行解释。我已经尝试过在头脑和纸上进行追踪,但却无法掌握功能中的代码。

2 个答案:

答案 0 :(得分:1)

在循环的第一行中,'%'运算符将给定的数字除以10并仅返回其余数字,表示除法的分数(25:10 = 2.5,因此它仅返回5!)。

该行' n / 10'然后完全反过来将逗号左边的部分存储到变量本身,就像' /' operator 仅返回逗号的左侧部分。

简而言之,你可以说:

  1. n%10 仅返回divison的其余部分
  2. n / 10 "投掷"分裂的剩余部分
  3. 代码重复

答案 1 :(得分: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然后循环将停止。)