Python代码中的运行时错误,用于使用函数求反

时间:2018-08-26 21:52:42

标签: python-3.x

我收到运行时错误消息:

  

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)

2 个答案:

答案 0 :(得分:2)

您要反转整数(例如intreverse(123) = 321

您的功能有两个问题,

  1. 没有return值(您的函数始终返回None
  2. while循环进入无限运行(intreverse(123)返回321000...0,因为对于任何正数n=n//10n>=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所示)

     
      
  1. intreverse(123001)将返回100321,这很正常
  2.   
  3. intreverse(123000)将返回321
  4.   

如果您对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()即可输出值。