鱼C论坛

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

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

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

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

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

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

问题是:都不是回文数

代码如下,恳请大佬看下问题出在何处,
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
最佳答案
2020-11-8 18:08:54
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()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-8 18:08:54 | 显示全部楼层    本楼为最佳答案   
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()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-8 18:16:06 | 显示全部楼层
本帖最后由 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[i] != a[- 1 - i] :  # 字符串 a 的首尾字符两两比较
            temp = False         # 如果不相同,那就修改 temp 为 False
            break                # 退出循环
    if temp == True:
        print('是回文数')
    else:
        print('不是回文数')
    m -= 1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

使用道具 举报

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


写一行可不是什么好事
for _ in range(int(input('请输入次数:'))) :  
    str = input('请输入一个正整数:')
    
    if str == str[::-1]:
        print('是回文数')
    else:
        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, 2025-1-17 14:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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