关于新版Python第006讲课后while语句的问题
score = input("请输入你的分数:")while score != 'e':
score = int(score)
if score < 60:
print("D")
if 60 <= score < 80:
print("C")
if 80 <= score < 90:
print("B")
if 90 <= score < 100:
print("A")
if score == 100:
print("S")
score = input("请输入你的分数:")
参考答案中,如果去掉最后一句,运行时,随便输入一个数,会无限重读print的答案,但是加上最后一句,就会重提问一次,这是为什么呢?
例如,去掉最后一句后,运行时,我输入20,会无限打印"A",加上最后一句,运行时,只打印一遍“请输入你的分数” 在执行input语句时会暂停程序,只有当你输入了值并按下回车才会继续执行
input 函数是等待用户输入,并将用户输入的结果转化位字符串,所以会停下运行,待用户输入后才会继续运行下面的代码
如果去掉最后一句,你输入任何一个数字后,score的值永远不等于'e',while的条件一直为真,进入死循环。 本帖最后由 xiaosi4081 于 2020-6-11 07:41 编辑
score = input("请输入你的分数:")
while score != 'e':
score = int(score)
if score < 60:
print("D")
break
if 60 <= score < 80:
print("C")
break
if 80 <= score < 90:
print("B")
break
if 90 <= score < 100:
print("A")
break
if score == 100:
print("S")
break
input 函数是等待用户输入,并将用户输入的结果转化位字符串,所以会停下运行,待用户输入后才会继续运行下面的代码
而break是用来跳过循环的 本帖最后由 1223253411 于 2020-6-11 11:43 编辑
兄弟看看一开始输入20以后是不是score的变量指向的就是20
如果score变量不改变的话,是不是score在循环中始终就是20,那会怎么样呢
while 20 != "e": # 对不对,成不成立,能不能进入循环,那肯定是能的
input是阻塞函数,能将score的变量重新赋值,输入什么赋值什么,还挺好,虽然都是字符串,不过可以转型
用input改变了score变量是不是就可以让循环根据自己输入的数值来进行相应的判断了 整个循环中SCORE并没有被重新赋值,SCORE变量始终开始INPUT的分数,所以while score != 'e'永远成立,也就成了死循环
逻辑有点混乱,为什么最后还要来一个 score = input("请输入你的分数:")? 而且这只是一个一次性的判断,为什么要用循环? 哦,明白了,这是一个每次都输入一个成绩,直到输入e才停止的程序,没仔细看,抱歉
楼主,这是新版课后作业006讲,动动手1题。这是标准答案:
score = input("请输入你的分数:")
while score != 'e':
score = int(score)
if score < 60:
print("D")
if 60 <= score < 80:
print("C")
if 80 <= score < 90:
print("B")
if 90 <= score < 100:
print("A")
if score == 100:
print("S")
score = input("请输入你的分数:")
如果去掉最后一句话。那么,代码就变成了:
score = input("请输入你的分数:")
while score != 'e':
score = int(score)
if score < 60:
print("D")
if 60 <= score < 80:
print("C")
if 80 <= score < 90:
print("B")
if 90 <= score < 100:
print("A")
if score == 100:
print("S")
为什么会不断打印等级字母,因为,这是恒成立,恒为真,
这个代码的判断条件while score != 'e': 是恒成立的,因为我们根本就不会输入'e',所以恒成立,那么就会
一直循环,一直判断,一直执行,也就是一直判断并打印你之前输入的数值的等级。
然后,你把之前删除的语句补回之后,就恢复了。
因为,input 函数的作用就是 等待用户输入,并且将用户输入的结果转化位字符串
所以在这里,你补上之后就会停下运行,它会等你重新输入一个数值,再重新判断,执行
每判断一次,打印一个等级,就会停下,要等你输入一个新的数值才会再次运行,这就是input()作用。
页:
[1]