一个零基础python入门学习课堂练习的求助
新人刚学python,在做《零基础python入门》第四章4.2课堂小练习的时候,我想把那个填分数的小程序改成错了可以继续填的样子。但是试了很多方法都没成功。麻烦各位帮忙看下怎么改才行。谢谢。原程序是:
#P4.1.py
score = int(input('输入分数:'))
if 100 >= score >= 90:
print('A')
elif 90 > score >= 80:
print('B')
elif 80 > score >= 60:
print('C')
elif 60 > score >= 0:
print('D')
else:
print('输入错误。')
我试了一些方法后,最后改完至少能跑起来不死机的是:
for guess in range(0,100):
guess = int(input('输入你的分数:'))
score = int(guess)
while True:
if score != guess:
score = input('输入错误,继续:')
else:
if 100 >= score >= 90:
print('A')
elif 90 > score >= 80:
print('B')
elif 80 > score >= 60:
print('C')
elif 60 > score >= 0:
print('D')
print('over')
但是这个运行后只会一直提示输入分数。请教有没有什么办法让它在输入0-100之外的数字后,再返回继续输入一直到正确的范围呢?多谢。 本帖最后由 Hoiste 于 2020-3-21 16:24 编辑
一、循环内要再次把score转成int类型,否则字符串类型永远无法等于整形数字
二、没有设置break条件,所以会陷入死循环。
三、有一个无意义的for循环和无意义的变量名
参考代码
score = int(input('输入你的分数:'))
while True:
if score in range(0,101):#0到100之间的整形列表,不包含101
if 100 >= score >= 90:
print('A')
elif 90 >= score >= 80:
print('B')
elif 80 >= score >= 60:
print('C')
elif 60 >= score >= 0:
print('D')
break#没有这个会一直死循环的
else:
score = int(input('输入有误,请重新输入:'))
while True:
guess = int(input('输入你的分数:'))
if guess < 0 or guess > 100:
score = print('输入错误,重新输入')
elif 100 >= guess >= 90:
print('A')
elif 90 > guess >= 80:
print('B')
elif 80 > guess >= 60:
print('C')
elif 60 > guess >= 0:
print('D') xinhua202002 发表于 2020-3-21 16:21
多谢多谢,原来是这么做啊,我试了那个大于或者小于,但是我用的是 if 100 < guess < 0 ,提示错误,然后就没再用它。现在知道了,谢谢{:5_109:} Hoiste 发表于 2020-3-21 16:16
循环内要再次把score转成int类型,否则字符串类型永远无法等于整形数字,此外没有设置break条件,所以会陷 ...
嗯,明白了,多谢。我一开始加了个break,然后也是一直让输入分数。后边我又把break去掉了,把range挪到后边,结果就是直接卡死了。 Hoiste 发表于 2020-3-21 16:16
一、循环内要再次把score转成int类型,否则字符串类型永远无法等于整形数字
二、没有设置break条件,所以 ...
刚才没刷出这个代码,把最佳给那位朋友了。现在才看到代码,你这个更完美。没办法,没法选最佳了,手动最佳吧。这个才是我想要的效果。多谢多谢。学习了。{:5_109:} 你打算完成什么功能?
前三行的 for循环导致你需要输入100次(不管你输入的是什么值)
score每次输入都需要转成int,否则不能与int进行比较
你是打算输入一个值,然后输出等级,若输入超出范围则重新输入?
score = int(input('输入你的分数:'))
while True:
if score>100 or score<0:
score = int(input('输入错误,继续:'))
continue
if 100 >= score >= 90:
print('A')
elif 90 > score >= 80:
print('B')
elif 80 > score >= 60:
print('C')
elif 60 > score >= 0:
print('D')
break
print('over')
sunrise085 发表于 2020-3-21 16:36
你打算完成什么功能?
前三行的 for循环导致你需要输入100次(不管你输入的是什么值)
score每次输入都需 ...
多谢各位热心帮忙,你这个也很棒,又学会一个continue,多谢多谢。就是这效果
页:
[1]