判断整数是否为回文数的代码始终返回false问题求助
问题:判断整数是否为回文数的代码始终返回False
你的代码逻辑存在一个关键问题,导致无论输入什么有效回文数都会返回False:
def checkPalindrome(num): rev = 0 while num != 0: d = num % 10 rev = (rev * 10) + d num = num // 10 print(rev) if num==rev: return True else: return False print(checkPalindrome(1))
问题分析
在while循环中,你直接对传入的参数num进行了修改(num = num // 10),当循环结束时,num的值已经被逐步整除为0。这时候你拿0和反转后的rev做比较,显然永远不会相等,所以函数必然返回False。
修正方案
只需要先保存原始的num值,用一个临时变量来处理循环中的整除操作,最后拿原始值和反转后的rev比较即可:
def checkPalindrome(num): original_num = num rev = 0 # 用临时变量temp_num来处理循环,避免修改原始num temp_num = num while temp_num != 0: d = temp_num % 10 rev = (rev * 10) + d temp_num = temp_num // 10 print(rev) return original_num == rev print(checkPalindrome(1)) # 输出True
额外优化(可选)
如果需要处理负数的情况,因为负数包含负号,不可能是回文数,可以在函数开头直接判断:
def checkPalindrome(num): # 负数直接返回False if num < 0: return False original_num = num rev = 0 temp_num = num while temp_num != 0: d = temp_num % 10 rev = (rev * 10) + d temp_num = temp_num // 10 return original_num == rev
内容的提问来源于stack exchange,提问作者MANISH VERMA
相关产品推荐
相关产品推荐

