反转 python 中的整数无效
Reversing an integer in python is not working
def intreverse(n): #reverses an integer
x=0
d=0
while(n>0):
d=n%10
x=x*10+d
n=n/10
return x
为什么这段代码没有给我 python 中整数的反转?
如果您正在使用 Python 3,请使用整数除法 //
因为 /
会给您一个浮点数。
def intreverse(n):
x=0
d=0
while n > 0:
d = n % 10
x= x * 10 + d
n = n // 10
return (x)
您甚至可以通过在 while 循环之前删除变量 d 来改进您的代码,因为它的值在您进入循环时被重新赋值,您还可以使用扩充赋值运算符 //=
而不是 n = n // 10
,所以你可以是:
def intreverse(n):
x = 0
while n > 0:
d = n % 10
x = x * 10 + d
n //= 10
return x
如果您担心特定整数大小的溢出,您可以使用简单的 if 语句 [-2^(31), 2^(31) - 1 检查整数是否在 32 位范围内]
def intreverse(self, x: int) -> int:
negative = False
if x < 0:
negative = True
x = x * -1
res = 0
while x != 0:
res = (res * 10) + x % 10
x = x // 10
if (res > (2 ** 31) - 1) or (res < -(2 ** 31)):
return 0
return (res * -1) if negative else res
def intreverse(n): #reverses an integer
x=0
d=0
while(n>0):
d=n%10
x=x*10+d
n=n/10
return x
为什么这段代码没有给我 python 中整数的反转?
如果您正在使用 Python 3,请使用整数除法 //
因为 /
会给您一个浮点数。
def intreverse(n):
x=0
d=0
while n > 0:
d = n % 10
x= x * 10 + d
n = n // 10
return (x)
您甚至可以通过在 while 循环之前删除变量 d 来改进您的代码,因为它的值在您进入循环时被重新赋值,您还可以使用扩充赋值运算符 //=
而不是 n = n // 10
,所以你可以是:
def intreverse(n):
x = 0
while n > 0:
d = n % 10
x = x * 10 + d
n //= 10
return x
如果您担心特定整数大小的溢出,您可以使用简单的 if 语句 [-2^(31), 2^(31) - 1 检查整数是否在 32 位范围内]
def intreverse(self, x: int) -> int:
negative = False
if x < 0:
negative = True
x = x * -1
res = 0
while x != 0:
res = (res * 10) + x % 10
x = x // 10
if (res > (2 ** 31) - 1) or (res < -(2 ** 31)):
return 0
return (res * -1) if negative else res