小鸡炖葫芦 发表于 2020-9-19 15:35:46

这串代码有问题吗 为什么提示出错啊

本帖最后由 小鸡炖葫芦 于 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 15:36:55

本帖最后由 疾风怪盗 于 2020-9-19 15:39 编辑

while not temb.isdigit() and temb > 100 and temb < 0:
这个又要大于100,又要小于0,这个星球上很难找到这样的数
这个判断应该用or吧
而却temb是字符串,直接temb>100也不对
while not temb.isdigit() or int(temb) > 100 or int(temb) < 0:

小鸡炖葫芦 发表于 2020-9-19 15:50:42

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

不好意思我手误打错了 修改过来了
但是还是不好使

小鸡炖葫芦 发表于 2020-9-19 15:54:25

小鸡炖葫芦 发表于 2020-9-19 15:50
不好意思我手误打错了 修改过来了
但是还是不好使

就是打正常的0到100的数没问题 如果打比如105 他不会进入循环,直接结束了就

巴巴鲁 发表于 2020-9-19 16:18:21

你没有判定输入不在0~100的情况
temb = input('请输入你的分数')
while not temb.isdigit() and int(temb) < 0 or int(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')

coolliqing 发表于 2020-9-19 16:24:58

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


count = True
while count:
    temb = input('请输入你的分数:')
    if not temb.isdigit():
      print('请输入纯数字')
    else:
      score = int(temb)
      if 0 > score or score > 100:
            print('请输入大于0且小于100的整数')
      else:
            break

if 100 > score >= 90:
    print('A')
elif 90 > score >= 80:
    print('B')
elif 80 > score >= 60:
    print('C')
elif 60 > score >= 0:
    print('D')



疾风怪盗 发表于 2020-9-19 16:57:46

小鸡炖葫芦 发表于 2020-9-19 15:54
就是打正常的0到100的数没问题 如果打比如105 他不会进入循环,直接结束了就

不懂,你要的不就是输入在105,跳出请输入整数,再重新输入,再进入判断这样的么?
按你的代码,就改成or,不就行了么?
temb = input('请输入你的分数')
while not temb.isdigit() or int(temb) > 100 or int(temb) < 0:
    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 17:04:41

巴巴鲁 发表于 2020-9-19 16:18
你没有判定输入不在0~100的情况

你这样,输入22.2就报错了

巴巴鲁 发表于 2020-9-19 17:36:44

疾风怪盗 发表于 2020-9-19 17:04
你这样,输入22.2就报错了

抱歉,没考虑小数
改成浮点数就好了
temb = input('请输入你的分数')
while not temb.isdigit() and float(temb) < 0 or float(temb) > 100:
    temb = input('请重新输入你的分数')
score = float(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 17:44:40

巴巴鲁 发表于 2020-9-19 17:36
抱歉,没考虑小数
改成浮点数就好了

但是按照楼主的意思
temb = input('请输入整数')
分数应该是个整数

巴巴鲁 发表于 2020-9-19 17:57:16

疾风怪盗 发表于 2020-9-19 17:44
但是按照楼主的意思

分数应该是个整数

意思是第一次输入的是小数,就要重新输入变成整数?

疾风怪盗 发表于 2020-9-19 18:01:27

巴巴鲁 发表于 2020-9-19 17:57
意思是第一次输入的是小数,就要重新输入变成整数?

应该是这个意思,输入小数,就提示重新输入

巴巴鲁 发表于 2020-9-19 18:06:49

对对对,你的代码是对的,我对比了一下我们的代码,发现
while not temb.isdigit() and int(temb) < 0 or int(temb) > 100:不一样
大佬可以讲一下temb.isdigit()的用处吗?我前几天才入python,基础不太好{:10_254:}

疾风怪盗 发表于 2020-9-19 18:11:57

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

检测是否纯数字。。。。。。
22.2就会判断为False
{:10_284:}C++没有类似的方法么

巴巴鲁 发表于 2020-9-19 18:16:24

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

不清楚,没听说过{:10_250:}

southcity 发表于 2020-9-19 22:31:24

{:10_277:}用 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')
页: [1]
查看完整版本: 这串代码有问题吗 为什么提示出错啊