免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 12747 | 回复: 2

【输入一个四位数,逆序输出】分支结构执行出错 [复制链接]

论坛徽章:
0
发表于 2021-06-03 16:12 |显示全部楼层

做了一个小练习, 逆序输出一个四位数。
写了一个函数,可以选择4种方法执行。
可是执行的时候不管输入数字几都输出num error

#输入一个四位数,逆序输出
def reverse(a):

    print("*" * 10, "1.使用字符串切片操作", "*" * 10)
    print("*" * 10, "2.使用字符串索引和连接操作", "*" * 10)
    print("*" * 10, "3.使用for循环", "*" * 10)
    print("*" * 10, "4.使用数学方法", "*" * 10)
    num = input("输入选择的方法")
    b = ""
    if num == 1:
        b == str(a)[::-1]

    elif num == 2:
        b = str(a)[3]+str(a)[2]+str(a)[1]+str(a)[0]

    elif num == 3:

        for i in str(a):
            b = i + b
    elif num == 4:
        gw = int(a)%10
        sw = int(a)//10%10
        bw = int(a)//10//10%10
        qw = int(a)//1000
        b = gw*1000+sw*100+bw*10+qw
        # b = str(gw)+str(sw)+str(bw)+str(qw)
    else:
        print("error num")
    print(b)

a = input("请输入一个四位数:")
reverse(a)
运行结果:请输入一个四位数:8765********** 1.使用字符串切片操作 ******************** 2.使用字符串索引和连接操作 ******************** 3.使用for循环 ******************** 4.使用数学方法 **********输入选择的方法3error num

然后我在调试的时候发现一个问题,将代码略作修改就可以正常运行修改后的代码:#输入一个四位数,逆序输出
def reverse(a):

    print("*" * 10, "1.使用字符串切片操作", "*" * 10)
    print("*" * 10, "2.使用字符串索引和连接操作", "*" * 10)
    print("*" * 10, "3.使用for循环", "*" * 10)
    print("*" * 10, "4.使用数学方法", "*" * 10)
    num = input("输入选择的方法")
    b = ""
    if num == 1:
        b == str(a)[::-1]

    elif num == 2:
        b = str(a)[3]+str(a)[2]+str(a)[1]+str(a)[0]

    elif num == 3:

        for i in str(a):
            b = i + b
    else:
        gw = int(a)%10
        sw = int(a)//10%10
        bw = int(a)//10//10%10
        qw = int(a)//1000
        b = gw*1000+sw*100+bw*10+qw
        # b = str(gw)+str(sw)+str(bw)+str(qw)
    print(b)

a = input("请输入一个四位数:")
reverse(a)
以上代码可以正常运行差别就在于最后num==4的时候直接写成else的情况请教一下差别在哪里呢???


论坛徽章:
0
发表于 2021-06-07 16:26 |显示全部楼层
因为你根本没进入其他几个判断,你input的类型是str,判断类型是int,所以else成立,一直走的else
加几行
try:
    num=int(num)
except Excetpion as e:
    print(e)

论坛徽章:
0
发表于 2021-06-08 16:31 |显示全部楼层
回复 2# landihua

感谢!感谢!粗心了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP