这串代码有问题吗 为什么提示出错啊
本帖最后由 小鸡炖葫芦 于 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: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:36
这个又要大于100,又要小于0,这个星球上很难找到这样的数
这个判断应该用or吧
而却temb是字符串,直接 ...
不好意思我手误打错了 修改过来了
但是还是不好使 小鸡炖葫芦 发表于 2020-9-19 15:50
不好意思我手误打错了 修改过来了
但是还是不好使
就是打正常的0到100的数没问题 如果打比如105 他不会进入循环,直接结束了就 你没有判定输入不在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') 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 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 16:18
你没有判定输入不在0~100的情况
你这样,输入22.2就报错了 疾风怪盗 发表于 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:36
抱歉,没考虑小数
改成浮点数就好了
但是按照楼主的意思
temb = input('请输入整数')
分数应该是个整数 疾风怪盗 发表于 2020-9-19 17:44
但是按照楼主的意思
分数应该是个整数
意思是第一次输入的是小数,就要重新输入变成整数? 巴巴鲁 发表于 2020-9-19 17:57
意思是第一次输入的是小数,就要重新输入变成整数?
应该是这个意思,输入小数,就提示重新输入 对对对,你的代码是对的,我对比了一下我们的代码,发现
while not temb.isdigit() and int(temb) < 0 or int(temb) > 100:不一样
大佬可以讲一下temb.isdigit()的用处吗?我前几天才入python,基础不太好{:10_254:} 巴巴鲁 发表于 2020-9-19 18:06
对对对,你的代码是对的,我对比了一下我们的代码,发现
不一样
大佬可以讲一下temb.isdigit()的用处吗? ...
检测是否纯数字。。。。。。
22.2就会判断为False
{:10_284:}C++没有类似的方法么 疾风怪盗 发表于 2020-9-19 18:11
检测是否纯数字。。。。。。
22.2就会判断为False
C++没有类似的方法么
不清楚,没听说过{:10_250:} {: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]