方法一:用一个while循环,将一个数每次都取出首位和末位,判断是否相等,
如果相等那么去掉这个数的首位和末位,
最后如果剩余1位数,即位数为奇数,且是最中间那一位,表明这个数是回文数
如果最后剩余0位数,即位数为偶数,表明这个数是回文数退出
只要有一次不相等退出即可
x=int(input("请输入一个整数:"))
if x<0:
print("不是回文数。")
elif not x//10:# 这个条件判断的是个位数,个位数直接是回文数
print("是回文数。")
else:
y = x
weishu = 0
# 获得当前的位数
while x:
weishu += 1
x = x // 10
while True:
a = y // (10 ** (weishu - 1)) # 这是取数字的首位
b = y % 10 # 取数字的末位
if a != b: # 如果首尾不相等则不是回文数
print('不是回文数')
weishu -= 2
if weishu == 1:
print('是回文数')
break
if not weishu:
print("是回文数")
break
y = y // 10 # 去掉末位
y = y % (10 ** weishu) # 去掉首位
方法二: 每一个回文数从中间切开,前后都是相等的,得到一个回文数后面的数与前面的数比较即可
# 开发时间:2024/1/10 17:05
x = int(input("请输入一个整数:"))
if x < 0 or (x % 10 == 0 and x != 0): # 小于0或者 不为0时末位数为0的都不是回文
print("不是回文数。")
elif not x // 10: # 个位数直接是回文
print("是回文数。")
else:
hou = 0
while x > hou: # 当后面的数已经大于前面的数就可以退出循环
hou = hou * 10 + x % 10 # 每次将后面的数乘上10, 然后加上前面数的末位
x //= 10 # 消除末位
print('-----', x, hou)
# 只要最后得到的前面的数,或者后面的数除去末位数与另一个相等即可
if x == hou or x == (hou // 10):
print('是回文')
else:
print('不是回文数')