判断是否为回文数
思路:拿数字的首尾位,正数第二位和倒数第二位,正数第三位和倒数第三位,......依此类推判断是否相等,如果对,则为回文数问题是:都不是回文数
代码如下,恳请大佬看下问题出在何处,
1,是否最里面嵌套的循环或者break和continue语句有问题么?
2,为什么变量temp的值总是False
m = int(input('请输入次数:'))#程序运行次数
while m:
print('请输入一共正整数:',end='')
a = input() #输入的数字为字符串形式
n = len(a) #输入数字的位数
temp = False
for i in a: #逐个拿出输入字符串数字的每一个位数上的值
for x in range(1,n+1):#逐个拿出输入字符串数字长度的数的值
if i != a[-x]: #将输入的字符串的第一个数和最后一个数对比是否相等
break #条件成立立马退出循环
if i == a[-x]:#将输入的字符串的第一个数和最后一个数对比是否相等
continue #条件成立继续从头开始执行循环
temp = True
if temp == True:
print('是回文数')
else:
print('不是回文数')
m -= 1
def ck(x):
return str(x) == str(x)[::-1]
def main():
m = input('请输入测试次数:')
while m:
a = input('请输入待判断的回文数:')
if ck(a):
print('是回文')
else:
print('不是回文')
m -= 1
if __name__ == '__main__':
main() 本帖最后由 jackz007 于 2020-11-8 19:19 编辑
m = int(input('请输入次数:')) #程序运行次数
while m:
print('请输入一共正整数:',end='')
a = input()
n = len(a)
temp = True # 使用排除法,先假设 a 是回文数,因为在后续循环比较中,否定才是最为高效的判断,如果始终都无法否定,那自然就是了。
for i in range(len(a) // 2): # 每次比较 2 个字符,只需要循环字符串 a 字符数量的一半次数就可以了
if a != a[- 1 - i] :# 字符串 a 的首尾字符两两比较
temp = False # 如果不相同,那就修改 temp 为 False
break # 退出循环
if temp == True:
print('是回文数')
else:
print('不是回文数')
m -= 1 本帖最后由 jackz007 于 2020-11-8 18:40 编辑
楼主的代码有大幅度精简的余地,下面的代码与楼主的代码作用完全相同
for _ in range(int(input('请输入次数:'))) :
a = input('请输入一个正整数:')
if a == a[:: -1] : print('是回文数')
else : print('不是回文数') jackz007 发表于 2020-11-8 18:27
楼主的代码有大幅度精简的余地,下面的代码与楼主的代码作用完全相同
写一行可不是什么好事for _ in range(int(input('请输入次数:'))) :
str = input('请输入一个正整数:')
if str == str[::-1]:
print('是回文数')
else:
print('不是回文数') suchocolate 发表于 2020-11-8 18:08
感谢大佬指导,本人小白,学习还比较浅,最后一句还没学过。我运行了一下这段代码,里面漏了m转为整形哦{:5_109:},不过代码确实挺精简的。 jackz007 发表于 2020-11-8 18:16
感谢大佬回复,小白努力学习中,我那个代码确实比较冗余,请问我那个是哪里出了问题,为啥总不对{:5_109:} 永恒的蓝色梦想 发表于 2020-11-8 19:29
写一行可不是什么好事
为啥你们头像下面有那多图案 KevinLee1234567 发表于 2020-11-9 21:41
为啥你们头像下面有那多图案
这个是勋章,你点一下,然后可以去领个 VIP 的勋章 自己也写了一个回文数
a=input("请输入一个正整数:")
if str.isdigit(a) anda!='0':#判断输入的是全部是数字。且不是0开头
b=a[::-1]
if(a==b):
print(a,"是回文数")
else:print(a," 不是回文数")
else:print("没有输入正确格式的正整数")
页:
[1]