马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
大佬可以给小白解释一下python中回文数的代码含义吗?具体的工作原理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("不是回文数。")
本帖最后由 isdkz 于 2022-3-15 09:58 编辑
首先回文数得是一个正整数,因为正常的数字除0以外,最高位不能为0,所以除0以外最低位为0的数字也不是回文数,因为它反向排列就是最高位为0了if x < 0 or (x % 10 == 0 and x != 0):
print("不是回文数。")
如果不满足以上不是回文数的条件,则对该数字反向排列else:
revertedNumber = 0 # 先假设它反向排列的数字为0
while x > revertedNumber: # 如果它大于0,即它反向排列不是0,因为只有0的反向排列为0
revertedNumber = revertedNumber * 10 + x % 10 # 则将它最低位移向高一位,取x的最低位作为自己的最低位
x //= 10 # x丢弃自己的最低位
# 直到x<=revertedNumber退出循环,这时revertedNumber的位数等于或大于现在的x的位数且revertedNumber是原x丢弃的位数的1/2位或 (1/2)+1 位的逆向排列
如果revertedNumber的位数等于x的位数(即原x的1/2位),revertedNumber与现在的x相等即原x为回文数
如果revertedNumber的位数等于x的位数+1(即原x的(1/2)+1 位),revertedNumber丢弃最后一位(即原x的中间位)后与现在的x相等即原x为回文数 if x == revertedNumber or x == revertedNumber // 10:
print("是回文数。")
else:
print("不是回文数。")
注:x // 10 地板除法实现丢弃最后一位的效果, x % 10 取余实现取最后一位的效果
|