0

我的问题是什么?我想要反数——例如:123 ==>321

def loop(a):
    i=0
 while(a>=1)
       print(a%10)
       s=s/10
       i=i+1
4

3 回答 3

2

除了缩进和丢失的冒号之外,您的解决方案还有一些问题。

首先,您使用的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'
于 2013-09-26T11:21:18.810 回答
1

几个问题:

  • 您的缩进不匹配。PEP 8建议缩进 4 个空格。

  • 你错过了一个冒号之后while(a>=1)

  • 虽然这不是问题,但您不需要 while 循环中的括号,它可以是while a >= 1

  • s = s/10可能不会返回您所期望的。例如,12/10 == 1(除非您在这里处理浮点数)。


这一切都可以使用切片来简化:

>>> print int(str(123)[::-1])
321
于 2013-09-26T11:24:29.173 回答
0

正确缩进很重要。(并且不要混合制表符和空格。)

def loop(a):
    i = 0
    while a >= 1:
        print(a % 10)
        a = a / 10
        i = i + 1

在这种情况之后,您还缺少一个冒号while

于 2013-09-26T11:18:11.877 回答