找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 398|回复: 1

[代码与实例] 有人能帮我解答一下吗

1

主题

2

帖子

2

积分

贫民

积分
2
Mr.unknown 发表于 2017-12-25 21:37:28 | 显示全部楼层 |阅读模式
当输入内容为数字则打印数字,输入q,则推出循环,正解如下:while True:
    choice=input('请输入数字,结束请输入q')
    if choice.isdigit():
        print(int(choice))
    else:
        break
可是我在想能不能用一个不需要isdigit的判定实现这个功能,所
以我写的代码是:
while True:
    choice_1=input('请输入数字,结束请输入q')
    choice_2=int(choice_1)
    if choice_1 == 'q':
        break
    print(choice_2)

执行的时候,输入数字是没有问题的,输入q出来报错:
ValueError: invalid literal for int() with base 10: 'q'
刚学python,看了csdn解释还是不太懂,有人能帮我解释一下
为什么吗,另外有没有不用isdigit实现这个功能的方法!
谢谢大佬!




回复

使用道具 举报

2

主题

21

帖子

21

积分

贫民

积分
21
zamzus 发表于 2017-12-26 15:59:13 | 显示全部楼层
当你输入'q'的时候  choice_2=int('q'),这里错了。
while True:
    choice=input('请输入数字,结束请输入q')
    if choice.isdigit():
        print(int(choice))
    else:
        break
上面这个代码也不对,当你输入任何非整数的字符,都会跳出循环。
代码逻辑如下:判断输入的字符是否是 '整数' 或者 'q',如果不是,那就提示重新输入或者退出(你喜欢咋样都行),若是是这个两个中的一个,那就判断是 '整数' 还是 'q'……最方便还是使用 isdigit()这个东西
代码1:
while True:
    choice=input('请输入数字,结束请输入q:')
    if choice.isdigit():
        print(int(choice))
    elif choice == 'q':
        break
    else:
        print('输入有误,请重新输入\n')

代码2:
while True:
    choice=input('请输入数字,结束请输入q:')
    if choice == 'q':
        break
    try:
        print(int(choice))
    except:
        print('输入有误,请重新输入\n')

这里用到 try……except语法,百度去


   
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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