检查数字是否回文
Checking if number is palindromic
通过将用户输入作为函数调用参数传递并使用除法。
即使我的逻辑是正确的,我也无法理解我哪里出错了。
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)
您在每次迭代中都覆盖了 x
,因此在循环结束时它不会等于 rev
。在开始对它进行任何计算之前,您需要保留它。例如:
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
您的代码的唯一问题是,由于您在 rev
的计算中更改了 x
,因此您的最终陈述:
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
)。这将帮助您在将来发现类似的错误:)
有几种方法可以改进代码以使其正常运行,并使格式更简洁:
要修复您的代码,您需要确保您没有编辑 x
的值,而是编辑具有相同值的另一个变量的值,以便在您的最终比较中,您正在比较它到实际值:
class 解法:
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)
其次,这里没有真正的理由需要使用 class。使用函数本身也同样有效:
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())
通过将用户输入作为函数调用参数传递并使用除法。 即使我的逻辑是正确的,我也无法理解我哪里出错了。
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)
您在每次迭代中都覆盖了 x
,因此在循环结束时它不会等于 rev
。在开始对它进行任何计算之前,您需要保留它。例如:
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
您的代码的唯一问题是,由于您在 rev
的计算中更改了 x
,因此您的最终陈述:
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
)。这将帮助您在将来发现类似的错误:)
有几种方法可以改进代码以使其正常运行,并使格式更简洁:
要修复您的代码,您需要确保您没有编辑 x
的值,而是编辑具有相同值的另一个变量的值,以便在您的最终比较中,您正在比较它到实际值:
class 解法:
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)
其次,这里没有真正的理由需要使用 class。使用函数本身也同样有效:
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())