冬天的风 发表于 2020-6-10 22:21:38

关于新版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",加上最后一句,运行时,只打印一遍“请输入你的分数”

老八秘制 发表于 2020-6-10 22:24:00

在执行input语句时会暂停程序,只有当你输入了值并按下回车才会继续执行

Twilight6 发表于 2020-6-10 22:26:17


input 函数是等待用户输入,并将用户输入的结果转化位字符串,所以会停下运行,待用户输入后才会继续运行下面的代码

alan_hou 发表于 2020-6-10 22:33:20

如果去掉最后一句,你输入任何一个数字后,score的值永远不等于'e',while的条件一直为真,进入死循环。

xiaosi4081 发表于 2020-6-11 07:39:13

本帖最后由 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:41:54

本帖最后由 1223253411 于 2020-6-11 11:43 编辑

兄弟看看一开始输入20以后是不是score的变量指向的就是20
如果score变量不改变的话,是不是score在循环中始终就是20,那会怎么样呢

while 20 != "e": # 对不对,成不成立,能不能进入循环,那肯定是能的

input是阻塞函数,能将score的变量重新赋值,输入什么赋值什么,还挺好,虽然都是字符串,不过可以转型
用input改变了score变量是不是就可以让循环根据自己输入的数值来进行相应的判断了

yaiger 发表于 2020-6-11 14:35:39

整个循环中SCORE并没有被重新赋值,SCORE变量始终开始INPUT的分数,所以while score != 'e'永远成立,也就成了死循环

逻辑有点混乱,为什么最后还要来一个 score = input("请输入你的分数:")?

yaiger 发表于 2020-6-11 14:41:18

而且这只是一个一次性的判断,为什么要用循环?

yaiger 发表于 2020-6-11 14:43:52

哦,明白了,这是一个每次都输入一个成绩,直到输入e才停止的程序,没仔细看,抱歉

一抹心尘 发表于 2020-11-2 15:56:57

楼主,这是新版课后作业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]
查看完整版本: 关于新版Python第006讲课后while语句的问题