鱼C论坛

 找回密码
 立即注册
查看: 1532|回复: 9

[已解决]判断是否为回文数

[复制链接]
发表于 2020-11-8 17:43:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
思路:拿数字的首尾位,正数第二位和倒数第二位,正数第三位和倒数第三位,......依此类推判断是否相等,如果对,则为回文数

问题是:都不是回文数

代码如下,恳请大佬看下问题出在何处,
1,是否最里面嵌套的循环或者break和continue语句有问题么?
2,为什么变量temp的值总是False



  1. m = int(input('请输入次数:'))#程序运行次数
  2. while m:
  3.     print('请输入一共正整数:',end='')   
  4.     a = input()     #输入的数字为字符串形式
  5.     n = len(a)         #输入数字的位数
  6.     temp = False
  7.     for i in a:        #逐个拿出输入字符串数字的每一个位数上的值
  8.         for x in range(1,n+1):#逐个拿出输入字符串数字长度的数的值
  9.             if i != a[-x]: #将输入的字符串的第一个数和最后一个数对比是否相等
  10.                 break     #条件成立立马退出循环

  11.             if i == a[-x]:  #将输入的字符串的第一个数和最后一个数对比是否相等                           
  12.                 continue   #条件成立继续从头开始执行循环               
  13.         
  14.             temp = True                           
  15.     if temp == True:
  16.         print('是回文数')
  17.         
  18.     else:
  19.         print('不是回文数')


  20.     m -= 1
复制代码
最佳答案
2020-11-8 18:08:54
  1. def ck(x):
  2.     return str(x) == str(x)[::-1]       


  3. def main():
  4.     m = input('请输入测试次数:')
  5.     while m:
  6.         a = input('请输入待判断的回文数:')
  7.         if ck(a):
  8.             print('是回文')
  9.         else:
  10.             print('不是回文')
  11.         m -= 1


  12. if __name__ == '__main__':
  13.     main()
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-8 18:08:54 | 显示全部楼层    本楼为最佳答案   
  1. def ck(x):
  2.     return str(x) == str(x)[::-1]       


  3. def main():
  4.     m = input('请输入测试次数:')
  5.     while m:
  6.         a = input('请输入待判断的回文数:')
  7.         if ck(a):
  8.             print('是回文')
  9.         else:
  10.             print('不是回文')
  11.         m -= 1


  12. if __name__ == '__main__':
  13.     main()
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-8 18:16:06 | 显示全部楼层
本帖最后由 jackz007 于 2020-11-8 19:19 编辑
  1. m = int(input('请输入次数:')) #程序运行次数
  2. while m:
  3.     print('请输入一共正整数:',end='')   
  4.     a = input()                  
  5.     n = len(a)                  
  6.     temp = True                  # 使用排除法,先假设 a 是回文数,因为在后续循环比较中,否定才是最为高效的判断,如果始终都无法否定,那自然就是了。
  7.     for i in range(len(a) // 2): # 每次比较 2 个字符,只需要循环字符串 a 字符数量的一半次数就可以了
  8.         if a[i] != a[- 1 - i] :  # 字符串 a 的首尾字符两两比较
  9.             temp = False         # 如果不相同,那就修改 temp 为 False
  10.             break                # 退出循环
  11.     if temp == True:
  12.         print('是回文数')
  13.     else:
  14.         print('不是回文数')
  15.     m -= 1
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-8 18:27:33 | 显示全部楼层
本帖最后由 jackz007 于 2020-11-8 18:40 编辑

        楼主的代码有大幅度精简的余地,下面的代码与楼主的代码作用完全相同
  1. for _ in range(int(input('请输入次数:'))) :  
  2.     a = input('请输入一个正整数:')
  3.     if a == a[:: -1] : print('是回文数')
  4.     else : print('不是回文数')
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-8 19:29:10 | 显示全部楼层
jackz007 发表于 2020-11-8 18:27
楼主的代码有大幅度精简的余地,下面的代码与楼主的代码作用完全相同


写一行可不是什么好事
  1. for _ in range(int(input('请输入次数:'))) :  
  2.     str = input('请输入一个正整数:')
  3.    
  4.     if str == str[::-1]:
  5.         print('是回文数')
  6.     else:
  7.         print('不是回文数')
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-9 21:36:02 | 显示全部楼层

感谢大佬指导,本人小白,学习还比较浅,最后一句还没学过。我运行了一下这段代码,里面漏了m转为整形哦,不过代码确实挺精简的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-9 21:39:42 | 显示全部楼层

感谢大佬回复,小白努力学习中,我那个代码确实比较冗余,请问我那个是哪里出了问题,为啥总不对
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-9 21:41:20 | 显示全部楼层

为啥你们头像下面有那多图案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-10 12:26:19 | 显示全部楼层
KevinLee1234567 发表于 2020-11-9 21:41
为啥你们头像下面有那多图案

这个是勋章,你点一下,然后可以去领个 VIP 的勋章
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-24 17:47:08 | 显示全部楼层
自己也写了一个回文数
a=input("请输入一个正整数:")
if str.isdigit(a) and  a[0:1]!='0':#判断输入的是全部是数字。且不是0开头
    b=a[::-1]
    if(a==b):
        print(a,"是回文数")
    else:print(a," 不是回文数")
else:print("没有输入正确格式的正整数")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-20 01:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表