如何在python中反转int?

Mat*_*w C 1 python reverse

我正在创建一个python脚本,打印出'99瓶啤酒'的整首歌曲,但是相反.我唯一无法逆转的是数字,整数,而不是字符串.

这是我的完整脚本,

def reverse(str):
   return str[::-1]

def plural(word, b):
    if b != 1:
        return word + 's'
    else:
        return word

def line(b, ending):
    print b or reverse('No more'), plural(reverse('bottle'), b), reverse(ending)

for i in range(99, 0, -1):
    line(i, "of beer on the wall")
    line(i, "of beer"
    print reverse("Take one down, pass it around")
    line(i-1, "of beer on the wall \n")
Run Code Online (Sandbox Code Playgroud)

我理解我的反向函数将字符串作为参数,但是我不知道如何接受整数,或者如何在脚本中反转整数.

Alb*_*rto 9

不将数字转换为字符串:

def reverse_number(n):
    r = 0
    while n > 0:
        r *= 10
        r += n % 10
        n /= 10
    return r

print(reverse_number(123))
Run Code Online (Sandbox Code Playgroud)

  • +1 `reverse_number(10) == 1` 这是一个没有前导零的真数。 (2认同)
  • 虽然在这种情况下我认为这是一件坏事! (2认同)
  • 使用`n // = 10`代替`n/= 10`.这将导致较小的数字,并且不会返回理想的反转数字,无限数******. (2认同)
  • 正如 @BeatrizFonseca 所说,特别是在使用 Python 3 时,你必须使用 `//` (2认同)

gef*_*fei 6

像这样吗

>>> x = 123
>>> str(x)
'123'
>>> str(x)[::-1]
'321'
Run Code Online (Sandbox Code Playgroud)


jon*_*rpe 6

你正以一种奇怪的方式接近这一点.你已经有了一个倒车功能,那么为什么不以正常方式line建造线路呢?

def line(bottles, ending):
    return "{0} {1} {2}".format(bottles, 
                                plural("bottle", bottles), 
                                ending)
Run Code Online (Sandbox Code Playgroud)

其中运行如下:

>>> line(49, "of beer on the wall")
'49 bottles of beer on the wall'
Run Code Online (Sandbox Code Playgroud)

然后将结果传递给reverse:

>>> reverse(line(49, "of beer on the wall"))
'llaw eht no reeb fo selttob 94'
Run Code Online (Sandbox Code Playgroud)

这样可以更容易地分别测试代码的每个部分,并查看将它们放在一起时发生了什么.