鱼C论坛

 找回密码
 立即注册
查看: 1520|回复: 15

[已解决]这串代码有问题吗 为什么提示出错啊

[复制链接]
发表于 2020-9-19 15:35:46 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 小鸡炖葫芦 于 2020-9-19 15:39 编辑

temb = input('请输入你的分数')
while not temb.isdigit() and 0 < temb < 100:
    temb = input('请输入整数')
score = int(temb)
if 100 > score >= 90:
    print('A')
if 90 > score >= 80:
    print('B')
if 80 > score >= 60:
    print('C')
if 60 > score >= 0:
    print('D')
感谢各位大佬解答
最佳答案
2020-9-19 16:57:46
小鸡炖葫芦 发表于 2020-9-19 15:54
就是打正常的0到100的数没问题 如果打比如105 他不会进入循环,直接结束了就

不懂,你要的不就是输入在105,跳出请输入整数,再重新输入,再进入判断这样的么?
按你的代码,就改成or,不就行了么?
  1. temb = input('请输入你的分数')
  2. while not temb.isdigit() or int(temb) > 100 or int(temb) < 0:
  3.     temb = input('请输入整数')
  4. score = int(temb)
  5. if 100 > score >= 90:
  6.     print('A')
  7. if 90 > score >= 80:
  8.     print('B')
  9. if 80 > score >= 60:
  10.     print('C')
  11. if 60 > score >= 0:
  12.     print('D')
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-9-19 15:36:55 | 显示全部楼层
本帖最后由 疾风怪盗 于 2020-9-19 15:39 编辑
  1. while not temb.isdigit() and temb > 100 and temb < 0:
复制代码

这个又要大于100,又要小于0,这个星球上很难找到这样的数
这个判断应该用or吧
而却temb是字符串,直接temb>100也不对
  1. while not temb.isdigit() or int(temb) > 100 or int(temb) < 0:
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-9-19 15:50:42 | 显示全部楼层
疾风怪盗 发表于 2020-9-19 15:36
这个又要大于100,又要小于0,这个星球上很难找到这样的数
这个判断应该用or吧
而却temb是字符串,直接 ...

不好意思我手误打错了 修改过来了
但是还是不好使
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-19 15:54:25 | 显示全部楼层
小鸡炖葫芦 发表于 2020-9-19 15:50
不好意思我手误打错了 修改过来了
但是还是不好使

就是打正常的0到100的数没问题 如果打比如105 他不会进入循环,直接结束了就
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-19 16:18:21 | 显示全部楼层
你没有判定输入不在0~100的情况
  1. temb = input('请输入你的分数')
  2. while not temb.isdigit() and int(temb) < 0 or int(temb) > 100:
  3.     temb = input('请重新输入你的分数')
  4. score = int(temb)
  5. if 100 > score >= 90:
  6.     print('A')
  7. if 90 > score >= 80:
  8.     print('B')
  9. if 80 > score >= 60:
  10.     print('C')
  11. if 60 > score >= 0:
  12.     print('D')
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-9-19 16:24:58 | 显示全部楼层
  1. while not temb.isdigit() and 0 < temb < 100:  
复制代码

你这句是想写temb不能小于0 也不能大于100吧?
你现在写的这句翻译成人话就是 ,输入的值不是数字型字符串时,这个字符串要大于0并且小于100
输入的值都不是纯数字的字符串了,怎么比较大小呢。
改成这样试试


  1. count = True
  2. while count:
  3.     temb = input('请输入你的分数:')
  4.     if not temb.isdigit():
  5.         print('请输入纯数字')
  6.     else:
  7.         score = int(temb)
  8.         if 0 > score or score > 100:
  9.             print('请输入大于0且小于100的整数')
  10.         else:
  11.             break

  12. if 100 > score >= 90:
  13.     print('A')
  14. elif 90 > score >= 80:
  15.     print('B')
  16. elif 80 > score >= 60:
  17.     print('C')
  18. elif 60 > score >= 0:
  19.     print('D')
复制代码



想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-9-19 16:57:46 | 显示全部楼层    本楼为最佳答案   
小鸡炖葫芦 发表于 2020-9-19 15:54
就是打正常的0到100的数没问题 如果打比如105 他不会进入循环,直接结束了就

不懂,你要的不就是输入在105,跳出请输入整数,再重新输入,再进入判断这样的么?
按你的代码,就改成or,不就行了么?
  1. temb = input('请输入你的分数')
  2. while not temb.isdigit() or int(temb) > 100 or int(temb) < 0:
  3.     temb = input('请输入整数')
  4. score = int(temb)
  5. if 100 > score >= 90:
  6.     print('A')
  7. if 90 > score >= 80:
  8.     print('B')
  9. if 80 > score >= 60:
  10.     print('C')
  11. if 60 > score >= 0:
  12.     print('D')
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-9-19 17:04:41 | 显示全部楼层
巴巴鲁 发表于 2020-9-19 16:18
你没有判定输入不在0~100的情况

你这样,输入22.2就报错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-19 17:36:44 | 显示全部楼层
疾风怪盗 发表于 2020-9-19 17:04
你这样,输入22.2就报错了

抱歉,没考虑小数
改成浮点数就好了
  1. temb = input('请输入你的分数')
  2. while not temb.isdigit() and float(temb) < 0 or float(temb) > 100:
  3.     temb = input('请重新输入你的分数')
  4. score = float(temb)
  5. if 100 > score >= 90:
  6.     print('A')
  7. if 90 > score >= 80:
  8.     print('B')
  9. if 80 > score >= 60:
  10.     print('C')
  11. if 60 > score >= 0:
  12.     print('D')
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-19 17:44:40 | 显示全部楼层
巴巴鲁 发表于 2020-9-19 17:36
抱歉,没考虑小数
改成浮点数就好了

但是按照楼主的意思
  1. temb = input('请输入整数')
复制代码

分数应该是个整数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-19 17:57:16 | 显示全部楼层
疾风怪盗 发表于 2020-9-19 17:44
但是按照楼主的意思

分数应该是个整数

意思是第一次输入的是小数,就要重新输入变成整数?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-19 18:01:27 | 显示全部楼层
巴巴鲁 发表于 2020-9-19 17:57
意思是第一次输入的是小数,就要重新输入变成整数?

应该是这个意思,输入小数,就提示重新输入
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-19 18:06:49 | 显示全部楼层
对对对,你的代码是对的,我对比了一下我们的代码,发现
  1. while not temb.isdigit() and int(temb) < 0 or int(temb) > 100:
复制代码
不一样
大佬可以讲一下temb.isdigit()的用处吗?我前几天才入python,基础不太好
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-19 18:11:57 | 显示全部楼层
巴巴鲁 发表于 2020-9-19 18:06
对对对,你的代码是对的,我对比了一下我们的代码,发现
不一样
大佬可以讲一下temb.isdigit()的用处吗? ...

检测是否纯数字。。。。。。
22.2就会判断为False
C++没有类似的方法么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-19 18:16:24 | 显示全部楼层
疾风怪盗 发表于 2020-9-19 18:11
检测是否纯数字。。。。。。
22.2就会判断为False
C++没有类似的方法么

不清楚,没听说过
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-19 22:31:24 | 显示全部楼层
用 or
temp = input('请输入你的分数:')
while temp.isdigit() == False and int(temp) < 0 or int(temp) > 100:
    temp = input('输入不正确(只能输入正整数,并且只能再0~100之间),请重新输入:')
else :
    score = int(temp)
    if 100 > score >= 90:
        print('A')
    if 90 > score >= 80:
        print('B')
    if 80 > score >= 60:
        print('C')
    if 60 > score >= 0:
        print('D')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 14:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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