麻薯好好吃 发表于 2021-8-1 19:07:14

课后作业

零基础学python 最新版中课后作业第18讲的动动手第一题回文数答案看不懂有大神能解释解释吗

柿子饼同学 发表于 2021-8-1 19:28:39

本帖最后由 柿子饼同学 于 2021-8-1 19:46 编辑

嗯,你不至于所有都看不懂吧...
说说,你具体哪里的代码不懂?
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
      # 一开始,因为revertedNumber = 0 ,所以直接加上输入的x的个位 (x % 10 结果就是除以十的余数,就是它的个位)
      # 下一句的作用是把x最后一位砍断(x //= 10 就是x除以十然后只取整数部分,所以有去掉末尾的功效)
      # 然后循环再跑一遍,现在就相当于x的末位乘10(其实就是变成十位好让下一位上来)
      # 再加上x //= 10 之后x的个位
      # 这时发现,x的最后一位现在是revertedNumber的最前一位,同理,x的倒数第二位现在是revertedNumber的最正数第二位
      # 就有了一个反转x的一半的功效
      x //= 10

    if x == revertedNumber or x == revertedNumber // 10:
         #这里因为有奇数位的回文数,没办法等分两半,所以砍掉末尾相等也可
      print("是回文数。")
    else:
      print("不是回文数。")

额,注释看不懂的来问我{:10_254:}
页: [1]
查看完整版本: 课后作业