如何在python中反转int?

问题描述 投票:0回答:6

我正在创建一个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")

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

python reverse
6个回答
6
投票

你正以一种奇怪的方式接近这一点。你已经有了一个反转功能,那么为什么不让line以正常的方式构建线?

def line(bottles, ending):
    return "{0} {1} {2}".format(bottles, 
                                plural("bottle", bottles), 
                                ending)

其中包括:

>>> line(49, "of beer on the wall")
'49 bottles of beer on the wall'

然后将结果传递给reverse

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

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


8
投票

不将数字转换为字符串:

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

print(reverse_number(123))

6
投票

像这样的东西?

>>> x = 123
>>> str(x)
'123'
>>> str(x)[::-1]
'321'

1
投票

最好的方法是

x=12345
a=str(x)[::-1]\\ In this process i have create string of inverse of integer (a="54321")
a=int(a) \\ Here i have converted string a in integer 

或一行代码

a=int(str(x)[::-1]))

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

print(reverse_number(123))

0
投票

您可以使用str(i)将整数转换为字符串,然后使用反向函数。

以下行应该做你想要的:

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

0
投票

原始号码取自a

a = 123

我们将int转换为字符串,然后将其反转并再次转换为int并将反转的数字存储在b中

b = int("".join(reversed(str(a))))

打印a和b print(a,b)的值


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

打印(reverse_number(123))

如果数字以零结尾,则此代码将不起作用,示例100和1000返回1

© www.soinside.com 2019 - 2024. All rights reserved.