[英]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”正好相反,并将逗号的剩余部分存储到变量本身中,因为“ /”运算符仅返回逗号的左边部分。
简而言之,您可以说:
%运算符返回除法的余数。 (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.