我的问题是什么?我想要反数——例如:123 ==>321
def loop(a):
i=0
while(a>=1)
print(a%10)
s=s/10
i=i+1
除了缩进和丢失的冒号之外,您的解决方案还有一些问题。
首先,您使用的print
是自动添加换行符,因此这可能不是您想要的结果。您可以将结果存储在一个字符串中,将最新字符附加到该字符串中,然后在最后打印一次。
s
此外,您正在使用以前从未使用过的变量。在这种情况下,它应该是a
因为您想使用整数除以 10 来去除最后一个数字。请注意,在这种情况下,这只会像在 Python 2 中那样工作,因为 Python 3 将在那里使用浮点除法(例如15 / 10 == 1.5
) . 您可以通过在此处显式使用整数除法来防止这种情况(这也将使您的意图更加清晰):(s = s // 10
注意两个斜杠)。
最后,您在i
不使用它的情况下递增变量,因此您可以摆脱它。
最后,它可能看起来像这样:
def reverse (a):
rev = ''
while a > 1:
rev += str(a % 10)
a = a // 10
一个更短的解决方案,利用您可以反转字符串的事实:
>>> num = 123
>>> rev = int(str(num)[::-1])
>>> rev
321
如果您省略int()
,您甚至可以保留尾随/前导零并获得一个字符串:
>>> num = 3210
>>> str(num)[::-1]
'0123'
几个问题:
您的缩进不匹配。PEP 8建议缩进 4 个空格。
你错过了一个冒号之后while(a>=1)
虽然这不是问题,但您不需要 while 循环中的括号,它可以是while a >= 1
s = s/10
可能不会返回您所期望的。例如,12/10 == 1
(除非您在这里处理浮点数)。
这一切都可以使用切片来简化:
>>> print int(str(123)[::-1])
321
正确缩进很重要。(并且不要混合制表符和空格。)
def loop(a):
i = 0
while a >= 1:
print(a % 10)
a = a / 10
i = i + 1
在这种情况之后,您还缺少一个冒号while
。