二十又几 发表于 2022-4-3 17:58:05

关于回文数的问题

新版课后作业18讲

x = int(input("请输入一个正整数:"))

if x < 0 or (x % 10 == 0 and x != 0):
    print("不是回文数。")
else:
    revertedNumber = 0
    while x > revertedNumber:
      revertedNumber = revertedNumber * 10 + x % 10
      x //= 10

    if x == revertedNumber or x == revertedNumber // 10:
      print("是回文数。")
    else:
      print("不是回文数。")


比如说 121 ,121>0,revertedNumber = 0*10 + 121 % 10 = 1, x = 121 // 10 = 12   然后继续循环,12>0 ,revertedNumber = 1*10 + 12 % 10 = 3 ,x = 12//10 = 1 ,然后判断1< 3,while 循环结束,这也不好判断是不是回文数啊

对于这个循环的运算不太理解,按照运行的结果,revertedNumber 应该是12,但是 计算也得不到12,请问while里面的运算是什么样的?

isdkz 发表于 2022-4-3 17:59:42

你可以看一下这个:
https://fishc.com.cn/forum.php?mod=redirect&goto=findpost&ptid=208600&pid=5722550

二十又几 发表于 2022-4-3 19:01:48

isdkz 发表于 2022-4-3 17:59
你可以看一下这个:
https://fishc.com.cn/forum.php?mod=redirect&goto=findpost&ptid=208600&pid=572255 ...

看过了,还是不理解其中的运算,revertedNumber在 x 大于它的情况下,就应该一直执行
revertedNumber = revertedNumber * 10 + x % 10   这行代码
比如说121 ,第一次 revertedNumber 值为1 ,第二次 应该为 3 啊,怎么会变成12 呢,如果说第二次为 2,那第一次它的值 1,又存储在哪里呢?

代码小白liu 发表于 2022-4-3 19:48:58

revertedNumber = 1*10 + 12 % 10 = 3   这个不就是等于12么。。。。
页: [1]
查看完整版本: 关于回文数的问题