鱼C论坛

 找回密码
 立即注册
查看: 2689|回复: 16

[已解决]Python新版第006讲课后作业最后一题求助

[复制链接]
发表于 2021-1-1 19:01:39 | 显示全部楼层 |阅读模式
5鱼币
萌新小白,Python新版第006讲:改进我们的小游戏(上)课后习题,最后一题。求大佬解释代码最后一行。为什么循环语句会在这行赋值代码作用下结束。尝试改为 print("请输入你的分数:"),仍然会陷入无限循环。感谢,笔芯。。
  1. score = input("请输入你的分数:")
  2. while score != "e":
  3.     score = int(score)
  4.     if score < 60:
  5.         print("D")
  6.     if 60 <= score < 80:
  7.         print("C")
  8.     if 80 <= score < 90:
  9.         print("B")
  10.     if 90 <= score < 100:
  11.         print("A")
  12.     if score == 100:
  13.         print("S")
  14.     score = input("请输入你的分数:")
复制代码
最佳答案
2021-1-1 19:01:40
本帖最后由 qq1151985918 于 2021-1-2 09:51 编辑

楼主,你要理解这一点,while循环是有循环条件的,这个循环条件就是当 分数score只要不等于'e'(选择是e而不是其他字母很大可能是因为e是exit的首字母,不过这不影响),循环体就会执行循环代码,就会只执行while循环体之内的代码,外面的代码就不搭嘎了,所以当代码循环一遍之后,在循环体最后再次让用户输入score既是把循环的控制权教导用户手里,也是让用户选择是否要进行新的循环判断成绩,所以score既是输入的变量,用来查询成绩结果,又是控制循环的开关,随时可以退出。如果我们不想用score退出那么循环体就成了死循环,一直运行下去,直至崩溃,或者我们加入break代码来加以控制

下面回答下楼主问的 怎样在循环内用 break 来控制循环结束

  1. while True:#我们直接把循环定义为死循环,在循环内用 break 来结束循环
  2.    score = input("请输入你的分数(输入 e 退出):")
  3.    if score == "e":
  4.       break  #如果输入 e 退出循环
  5.    try:  #这里是原来代码没有的,加了个报错,用户是个毛孩子可能乱操作
  6.       score = float(score) #这里我把分数换为浮点型,因为实际中会存在比如90.5这种分数
  7.    except:
  8.       print("请输入正确分数\n")
  9.       continue   # continue 的意思就是结束本次循环立即进入下一次循环
  10.    
  11.    if score < 0 or score > 100:
  12.       print("请输入正确分数\n")
  13.       continue
  14.    if score < 60:
  15.       print("D")
  16.    if 60 <= score < 80:
  17.       print("C")
  18.    if 80 <= score < 90:
  19.       print("B")
  20.    if 90 <= score < 100:
  21.       print("A")
  22.    if score == 100:
  23.       print("S")

  24. print("已退出!")
复制代码

最佳答案

查看完整内容

楼主,你要理解这一点,while循环是有循环条件的,这个循环条件就是当 分数score只要不等于'e'(选择是e而不是其他字母很大可能是因为e是exit的首字母,不过这不影响),循环体就会执行循环代码,就会只执行while循环体之内的代码,外面的代码就不搭嘎了,所以当代码循环一遍之后,在循环体最后再次让用户输入score既是把循环的控制权教导用户手里,也是让用户选择是否要进行新的循环判断成绩,所以score既是输入的变量,用来查询成 ...
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-1-1 19:01:40 | 显示全部楼层    本楼为最佳答案   
本帖最后由 qq1151985918 于 2021-1-2 09:51 编辑

楼主,你要理解这一点,while循环是有循环条件的,这个循环条件就是当 分数score只要不等于'e'(选择是e而不是其他字母很大可能是因为e是exit的首字母,不过这不影响),循环体就会执行循环代码,就会只执行while循环体之内的代码,外面的代码就不搭嘎了,所以当代码循环一遍之后,在循环体最后再次让用户输入score既是把循环的控制权教导用户手里,也是让用户选择是否要进行新的循环判断成绩,所以score既是输入的变量,用来查询成绩结果,又是控制循环的开关,随时可以退出。如果我们不想用score退出那么循环体就成了死循环,一直运行下去,直至崩溃,或者我们加入break代码来加以控制

下面回答下楼主问的 怎样在循环内用 break 来控制循环结束

  1. while True:#我们直接把循环定义为死循环,在循环内用 break 来结束循环
  2.    score = input("请输入你的分数(输入 e 退出):")
  3.    if score == "e":
  4.       break  #如果输入 e 退出循环
  5.    try:  #这里是原来代码没有的,加了个报错,用户是个毛孩子可能乱操作
  6.       score = float(score) #这里我把分数换为浮点型,因为实际中会存在比如90.5这种分数
  7.    except:
  8.       print("请输入正确分数\n")
  9.       continue   # continue 的意思就是结束本次循环立即进入下一次循环
  10.    
  11.    if score < 0 or score > 100:
  12.       print("请输入正确分数\n")
  13.       continue
  14.    if score < 60:
  15.       print("D")
  16.    if 60 <= score < 80:
  17.       print("C")
  18.    if 80 <= score < 90:
  19.       print("B")
  20.    if 90 <= score < 100:
  21.       print("A")
  22.    if score == 100:
  23.       print("S")

  24. print("已退出!")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-1-1 19:08:25 | 显示全部楼层
换个顺序试一试
  1. score = input("请输入你的分数:")
  2. while score != "e":
  3.     score = input("请输入你的分数:")
  4.     score = int(score)
  5.     if score < 60:
  6.         print("D")
  7.     if 60 <= score < 80:
  8.         print("C")
  9.     if 80 <= score < 90:
  10.         print("B")
  11.     if 90 <= score < 100:
  12.         print("A")
  13.     if score == 100:
  14.         print("S")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-1-1 19:08:41 | 显示全部楼层
循环不是你想要的吗?
循环条件是score!=e
想要退出输入个e就好了呀
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-1-1 19:09:34 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-1-1 19:14:17 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-1-1 19:17:16 | 显示全部楼层

if分支语句的顺序有区别吗
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-1-1 19:18:30 | 显示全部楼层
昨非 发表于 2021-1-1 19:17
if分支语句的顺序有区别吗

把input放在最前面试一试
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-1-1 19:23:36 | 显示全部楼层
不会起名字的我 发表于 2021-1-1 19:18
把input放在最前面试一试

为什么要放在前面
那岂不是说要连输入两次?
这也不符合常规啊
再说了,楼主的问题是为什么最后一行代码回控制结束
你这显然答非所问啊
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-1-1 19:30:22 | 显示全部楼层
昨非 发表于 2021-1-1 19:23
为什么要放在前面
那岂不是说要连输入两次?
这也不符合常规啊

我明白了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-1-1 20:47:06 | 显示全部楼层
while循环语句是当条件满足时进入循环,因为你一直没有输入“e”,所以会一直循环下去,最后一行的意思是判断完成绩等级后要输入下一个成绩继续去判断,而当程序运行到这一行之后,如果你输入了“e”,跳回while判断是否进入循环的时候就会发现此时不满足score不等于e这个条件了,循环就终止了。
如果你改为了print(“请输入你的分数:”),结果就是score的值一直不等于e,while的条件判断会一直满足,就会陷入无限循环了。
顺带一提,while条件判断语句你可以理解为  “当”型循环语句,意思是    ”当条件满足进入循环“

评分

参与人数 1鱼币 +3 收起 理由
lucaszy + 3 感谢楼主无私奉献!谢谢解惑!

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-1-1 21:11:41 | 显示全部楼层
卧槽,还好我看的不是新版
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-1-1 21:50:21 | 显示全部楼层

换顺序就实现不了功能了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-1-1 22:02:35 | 显示全部楼层
qq1151985918 发表于 2021-1-1 19:01
楼主,你要理解这一点,while循环是有循环条件的,这个循环条件就是当 分数score只要不等于'e'(选择是e而不 ...

感谢大佬,现在很清楚了。。一条语句实现两个功能,这个很精妙阿,逻辑设计无敌阿。醍醐灌顶。

敢问大佬,如果加入break来结束循环,需要怎么操作呢?之前试了很多次,加入break,结果都是循环立马结束,只能循环一次,实现不了多次判断等级的功能。

比如下面这种,需要怎么改动
  1. score = input("请输入你的分数:")
  2. while score != "e":
  3.     score = int(score)
  4.     if score < 60:
  5.         print("D")
  6.     if 60 <= score < 80:
  7.         print("C")
  8.     if 80 <= score < 90:
  9.         print("B")
  10.     if 90 <= score < 100:
  11.         print("A")
  12.     if score == 100:
  13.         print("S")
  14.     score = input("请输入你的分数:")
  15.     break
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-1-1 22:06:29 | 显示全部楼层
Ⅲ只小猪 发表于 2021-1-1 21:11
卧槽,还好我看的不是新版

嘿嘿新版题目稍难???不太清楚,不过偶尔一两个确实值得好好琢磨,多练练没坏处
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-1-2 08:39:38 | 显示全部楼层
本帖最后由 qq1151985918 于 2021-1-2 09:50 编辑

  1. while True:#我们直接把循环定义为死循环,在循环内用 break 来结束循环
  2.    score = input("请输入你的分数(输入 e 退出):")
  3.    if score == "e":
  4.       break  #如果输入 e 退出循环
  5.    try:  #这里是原来代码没有的,加了个报错,用户是个毛孩子可能乱操作
  6.       score = float(score) #这里我把分数换为浮点型,因为实际中会存在比如90.5这种分数,整型也并不影响
  7.    except:
  8.       print("请输入正确分数\n")
  9.       continue   # continue 的意思就是结束本次循环立即进入下一次循环
  10.    
  11.    if score < 0 or score > 100:
  12.       print("请输入正确分数\n")
  13.       continue
  14.    if score < 60:
  15.       print("D")
  16.    if 60 <= score < 80:
  17.       print("C")
  18.    if 80 <= score < 90:
  19.       print("B")
  20.    if 90 <= score < 100:
  21.       print("A")
  22.    if score == 100:
  23.       print("S")

  24. print("已退出!")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-1-2 16:02:18 | 显示全部楼层

哇谢谢!!!好好研究下!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-29 14:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表