我收到运行时错误消息:
ValueError:以10为底的int()的无效文字:'intreverse(368)'
该问题的解决方案是什么?
这是我的代码:
def intreverse(n):
rev=0
dig=0
while(n>=0):
dig=n%10
rev=rev*10+dig
n=n//10
n=int(input("enter the number:"))
rev=intreverse(n)
print("Reverse is",rev)
答案 0 :(得分:2)
您要反转整数(例如intreverse(123) = 321
)
您的功能有两个问题,
return
值(您的函数始终返回None
)while
循环进入无限运行(intreverse(123)
返回321000...0
,因为对于任何正数n=n//10
,n>=0
绝不会破坏条件n
)因此,我将按照以下说明重新编写您的函数,以解决上述两个问题,
def intreverse(n):
rev=0
dig=0
while(n > 0):
dig = n%10
rev = rev*10 + dig
n = n//10
return rev
n=int(input("enter the number:"))
rev=intreverse(n)
print("Reverse is",rev)
限制:上面的代码将无法反转最低有效位为零的数字(如下面的情况2所示)
intreverse(123001)
将返回100321
,这很正常intreverse(123000)
将返回321
如果您对case-2(上述)感兴趣,那么我建议将integer
转换为string
并按照以下代码反转字符串。
def gen_intreverse(n):
s = str(n)
rev = ''
for letter in s:
rev = letter + rev
return rev
或者您可以按照以下说明使用[::-1]
修饰符
def gen_intreverse(n):
s = str(n)
return s[::-1]
答案 1 :(得分:0)
def gen_intreverse(n):
return str(n)[::-1]
将返回反向字符串。 intreverse(123001)
将返回"100321"
如果您想要int值。只需int()
即可输出值。