通过传递用户输入作为函数调用参数并使用除法。即使我的逻辑是正确的,我也不明白我在哪里出错。
class Solution:
def isPalindrome(self, x: int) -> bool:
x = int(input("Enter The number"))
rev = 0
while x > 0:
temp = x % 10
rev = (rev * 10 + temp)
x = x // 10
#print(rev)
if x == rev:
return True
else:
return False
sol = Solution()
a = sol.isPalindrome(x)
print(a)发布于 2021-09-13 23:39:25
有几种方法可以改进代码以使其正常工作,还可以使格式化更加简洁:
要修复代码,需要确保没有编辑x的值,而是编辑具有相同值的另一个变量的值,以便在最后的比较中将其与实际值进行比较:
班级解决方案:
def isPalindrome(self, x: int) -> bool:
x = int(input("Enter The number"))
placehold = x
rev = 0
while placehold > 0:
temp = placehold % 10
rev = (rev * 10 + temp)
placehold = placehold // 10
#print(rev)
if x == rev:
return True
else:
return False
sol = Solution()
a = sol.isPalindrome(x)
print(a)其次,这里没有真正的理由需要使用类。使用该函数本身也同样有效:
def isPalindrome():
x = int(input("Enter The number"))
placehold = x
rev = 0
while placehold > 0:
temp = placehold % 10
rev = (rev * 10 + temp)
placehold = placehold // 10
#print(rev)
if x == rev:
return True
else:
return False
print(isPalindrome())发布于 2021-09-13 23:08:28
在每次迭代中覆盖x,因此到循环结束时,它将不等于rev。在开始计算之前,你需要保存is。例如:
x = int(input("Enter The number"))
temp_x = x
rev = 0
while x > 0:
temp = tepm_x % 10
rev = (rev * 10 + temp)
temp_x = temp_x // 10发布于 2021-09-13 23:32:14
代码的唯一问题是,由于在计算x时更改了rev,所以最后的语句如下:
if x == rev:将永远是False,除非x=0
相反,只需创建x的副本并将rev与之进行比较:
x = int(input("Enter The number"))
orig = x
rev = 0
while x > 0:
temp = x % 10
rev = (rev * 10 + temp)
x = x // 10
if orig == rev:
return True
else:
return False对于将来,当您尝试调试某些东西时,打印出正在更改的变量(rev和x)。这将帮助您在将来捕获这样的错误:)
https://stackoverflow.com/questions/69169951
复制相似问题