我正在创建一个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")
我理解我的反向函数将字符串作为参数,但是我不知道如何接受整数,或者如何在脚本中反转整数。
你正以一种奇怪的方式接近这一点。你已经有了一个反转功能,那么为什么不让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'
这样可以更容易地分别测试代码的每个部分,并查看将它们放在一起时发生了什么。
不将数字转换为字符串:
def reverse_number(n):
r = 0
while n > 0:
r *= 10
r += n % 10
n /= 10
return r
print(reverse_number(123))
像这样的东西?
>>> x = 123
>>> str(x)
'123'
>>> str(x)[::-1]
'321'
最好的方法是
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]))
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))
您可以使用str(i)将整数转换为字符串,然后使用反向函数。
以下行应该做你想要的:
def line(b, ending):
print reverse(str(b)) or reverse('No more'), plural(reverse('bottle'),reverse(str(b))), reverse(ending)
原始号码取自a
a = 123
我们将int转换为字符串,然后将其反转并再次转换为int并将反转的数字存储在b中
b = int("".join(reversed(str(a))))
打印a和b print(a,b)
的值
def reverse_number(n):
r = 0
while n > 0:
r *= 10
r += n % 10
n /= 10
return r
打印(reverse_number(123))
如果数字以零结尾,则此代码将不起作用,示例100和1000返回1