为啥这个12321返回不是回文数啊?有大佬帮忙看看不
本帖最后由 菜de嚣张 于 2022-11-12 17:10 编辑x = int(input("请输入一个正整数:"))
if x < 0 or x != 0 and (x % 10 == 0):
print("不是回文数。")
else:
revertedNumber = 0
while x > 0:
revertedNumber = revertedNumber * 10 + x % 10
x //= 10
if x == revertedNumber:
print("是回文数。")
else:
print("不是回文数。")
if x < 0 or x != 0 and (x % 10 == 0):
and 的优先级高于 or
if x < 0 or (x != 0 and (x % 10 == 0)) :
x = 12321 , x != 0 为 True,x % 10 == 0 为 False,所以,x != 0 and (x % 10 == 0) 为 False
x < 0 为 False,x != 0 and (x % 10 == 0) 为 False,if x < 0 or x != 0 and (x % 10 == 0) 为 False 对啊,就是False,所以不执行“print(‘不是回文数。’)”,不是吗 jackz007 发表于 2022-11-12 17:12
and 的优先级高于 or
对啊,就是False,所以不执行“print(‘不是回文数。’)”,不是吗 菜de嚣张 发表于 2022-11-12 17:23
对啊,就是False,所以不执行“print(‘不是回文数。’)”,不是吗
while x > 0: # x 不等于 0 不罢休
revertedNumber = revertedNumber * 10 + x % 10
x //= 10
if x == revertedNumber: # x 是 0 值,怎么可能与revertedNumber 相等 x 在循环过程中被变成 0 了 tommyyu 发表于 2022-11-12 17:34
x 在循环过程中被变成 0 了
明白了谢谢大佬 jackz007 发表于 2022-11-12 17:28
明白了谢谢大佬 这个我觉得把数字转成文本,再取反,然后再比较,应该更快吧。
比如 a = str(x)
b = a[::-1]
if a == b:
print(....)
这样子。
gywjj 发表于 2022-11-12 22:06
这个我觉得把数字转成文本,再取反,然后再比较,应该更快吧。
比如 a = str(x)
b = a[::-1]
对,是更简单的方法哈哈哈
页:
[1]