使用Python无法检查整数溢出



我正在处理一个编码挑战,其中我必须反转一个整数。如果整数只有1位,我会原样返回整数。如果它小于零,我会反转它,但保持符号不变。我必须检查整数溢出,以确保它在[−231, 231 − 1]的范围内。以下是我的代码:

def reverse(self, x: int) -> int:

if x >=0 and x <= 9:
return x

elif x > 9 and x < (2**31):
rever1 =  str(x)[::-1]
return int(rever1)

elif x < 0 and x > (-2**31):
rever2 = str(x)[::-1]
rever2 = rever2[:-1]
rever2 = -1  * int(rever2)
return rever2

elif x <= (-2**31) or x >= (2**31):
return 0

我知道如何缩短这个代码,所以目前效率低下的问题还可以。我只是想知道为什么我的1534236469代码失败了。

尽管我非常感谢所有的帮助,但如果你只是告诉我代码失败的原因,而不是给我一个快速的解决方案,它会对我有更大的帮助。这些挑战背后的全部意义在于学习,这样如果有人只是给出答案,就会违背目的。

检查输入值,而不是返回值。你给出的测试用例是";"问题";class:输入的数字在范围内,但反之则不然。

您还需要检查rever1是否在范围内:

elif x > 9 and x < (2**31):
rever1 = str(x)[::-1]
return int(rever1)

可能是

elif x > 9 and x < (2**31):
rever1 = str(x)[::-1]
if rever1 < (2**31):
return int(rever1)
else:
return 0

既然您计划适当地缩短代码,我就不谈这些细节了。

最新更新