我正在创建一个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")
我理解我的反向函数将字符串作为参数,但是我不知道如何接受整数,或者如何在脚本中反转整数。
答案 0 :(得分:8)
不将数字转换为字符串:
def reverse_number(n):
r = 0
while n > 0:
r *= 10
r += n % 10
n /= 10
return r
print(reverse_number(123))
答案 1 :(得分:5)
这样的东西?
>>> x = 123
>>> str(x)
'123'
>>> str(x)[::-1]
'321'
答案 2 :(得分:5)
你正以一种奇怪的方式接近这一点。你已经有了一个倒车功能,那么为什么不让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'
这样可以更容易地分别测试代码的每个部分,并查看将它们放在一起时发生的事情。
答案 3 :(得分: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]))
答案 4 :(得分: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))
答案 5 :(得分:0)
您可以使用str(i)将整数转换为字符串,然后使用反向函数。
以下行应该可以满足您的需求:
def line(b, ending):
print reverse(str(b)) or reverse('No more'), plural(reverse('bottle'),reverse(str(b))), reverse(ending)
答案 6 :(得分:0)
原始号码位于
a = 123
我们将int转换为字符串,然后将其反转,然后再次转换为int并将反转的数字存储在b中
b = int("".join(reversed(str(a))))
打印a和b的值
print(a,b)
答案 7 :(得分:0)
def reverse_number(n):
r = 0
while n > 0:
r *= 10
r += n % 10
n /= 10
return r
print(reverse_number(123))
如果数字以零结尾,则此代码将不起作用,例如100和1000返回1
答案 8 :(得分:0)
def reverse(num):
rev = 0
while(num != 0):
reminder = num % 10
rev = (rev * 10 ) + reminder
num = num // 10
print ("Reverse number is : " , rev )
num=input("enter number : ")
reverse(int(num))
#/总是浮点数
#//除法运算得到的整数被调整到数字行的左侧
答案 9 :(得分:0)
我认为以下代码可以很好地反转您的正整数。 您可以将其用作代码中的函数。
n = input() # input is always taken as a string
rev = int(str(n)[::-1])
如果您将n
作为整数,则需要如图所示将其指定为str。这是反转正整数的最快方法
答案 10 :(得分:0)
您可以轻松地编写此类:
class reverse_number:
def __init__(self,rvs_num):
self.rvs_num = rvs_num
rvs_ed = int(str(rvs_num)[::-1])
print(rvs_ed)
您可以通过以下方式使用它:
reverse_number(your number)
答案 11 :(得分:0)
import math
def Function(inputt):
a = 1
input2 = inputt
while(input2 > 9):
input2 = input2/10
a = a + 1
print("There are ", a, " numbers ")
N = 10
m = 1
print(" THe reverse numbers are: ")
for i in range(a):
l = (inputt%N)/m
print(math.floor(l), end = '')
N = N*10
m = m*10
print(" \n")
return 0
enter = int(input("Enter the number: "))
print(Function(enter))
答案 12 :(得分:0)
def reverse(x):
re = 0
negative = x < 0
MAX_BIG = 2 ** 31 -1
MIN_BIG = -2 ** 31
x = abs(x)
while x != 0:
a = int(x % 10)
re = re * 10 + a
x = int(x // 10)
reverse = -1 * re if negative else re
return 0 if reverse < MIN_BIG or reverse > MAX_BIG else reverse
这是用于 32 位整数 ( -2^31 ; 2^31-1 )
答案 13 :(得分:0)
处理负数的更强大的解决方案:
def reverse_integer(num):
sign = [1,-1][num < 0]
output = sign * int(str(abs(num))[::-1])
答案 14 :(得分:-1)
我用不同的方式写了作品
def isPalindrome(x: int) -> bool:
if x<0:
return False
elif x<10:
return True
else:
rev=0
rem = x%10
quot = x//10
rev = rev*10+rem
while (quot>=10):
rem = quot%10
quot = quot//10
rev = rev*10+rem
rev = rev*10+quot
if rev==x:
return True
else:
return False
res=isPalindrome(1221)