鱼C论坛

 找回密码
 立即注册
12
返回列表 发新帖
楼主: 新路有平宽

[已解决]关于006讲课后习题中动动手的第一题疑问

[复制链接]
 楼主| 发表于 2026-9-4 09:10:47 | 显示全部楼层

  1. counts=5
  2. while counts > 0:
  3.     x = input("请输入你的分数:")
  4.     x = int(x)
  5.     if x < 60:
  6.         print("D")
  7.     else:
  8.         if 60 <= x < 80:
  9.             print("C")
  10.         else:
  11.             if 80 <= x < 90:
  12.                 print("B")
  13.             else:
  14.                 if 90 <= x < 100:
  15.                     print("A")
  16.                 else:
  17.                     print("S")
  18.     counts=counts-1
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2026-9-4 09:10:56 | 显示全部楼层
新路有平宽 发表于 2026-09-04 09:10
counts=5
while counts > 0:
    x = input("请输入 ...


您的代码在 `if 60` 之后被截断,无法看到完整内容,因此目前这段代码是**不完整**的,运行时会报语法错误。  
另外,您的循环里缺少 `counts -= 1`,会导致无限循环。

正确的做法是使用 `elif` 依次判断分数区间,并在循环末尾更新计数器。示例:


  1. counts = 5
  2. while counts > 0:
  3.     x = input("请输入你的分数:")
  4.     x = int(x)
  5.     if x < 60:
  6.         print("D")
  7.     elif x < 70:
  8.         print("C")
  9.     elif x < 80:
  10.         print("B")
  11.     elif x < 90:
  12.         print("A")
  13.     else:
  14.         print("S")
  15.     counts -= 1
复制代码


counts -= 1 这一行很重要,否则循环不会停止。

建议您在论坛发代码时,点击编辑器上的【代码】按钮,将代码包裹在 [code][/code] 标签中,这样就不会被截断了。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2026-9-4 09:11:49 | 显示全部楼层

我这样写代码是不是满足要求,请说出我写的代码不足之处
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2026-9-4 09:12:02 | 显示全部楼层
新路有平宽 发表于 2026-09-04 09:11
新路有平宽 发表于 2026-9-4 09:10


我这样写代码是 ...


你的代码目前**不满足题目要求**,主要有以下几点不足:

1. **代码不完整**:在 if 60 之后缺少完整的条件表达式、冒号和对应处理语句,运行时会直接报语法错误。
2. **嵌套过深**:使用 else: if 会让代码结构混乱、可读性差,建议改用 elif 来依次判断分数区间。
3. **缺少循环计数更新**:你的循环体内没有 counts -= 1,导致 counts 永远是 5,程序会无限循环下去。
4. **评级规则没有完整体现**:需要将分数 < 60、60~69、70~79、80~89、90 及以上这几个区间分别对应 D、C、B、A、S。

你可以参考下面的正确写法:


  1. counts = 5
  2. while counts > 0:
  3.     x = input("请输入你的分数:")
  4.     x = int(x)
  5.     if x < 60:
  6.         print("D")
  7.     elif x < 70:
  8.         print("C")
  9.     elif x < 80:
  10.         print("B")
  11.     elif x < 90:
  12.         print("A")
  13.     else:
  14.         print("S")
  15.     counts -= 1
复制代码


注意在发送代码时使用论坛的 [code][/code] 标签包裹,避免被截断。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2026-9-4 09:28:46 | 显示全部楼层
如果用if else 嵌套这种方式,应该怎么写代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2026-9-4 09:28:53 | 显示全部楼层
新路有平宽 发表于 2026-09-04 09:28
如果用if else 嵌套这种方式,应该怎么写代码


如果一定要用 `if else` 嵌套,可以这样写:


  1. counts = 5
  2. while counts > 0:
  3.     x = input("请输入你的分数:")
  4.     x = int(x)
  5.     if x < 60:
  6.         print("D")
  7.     else:
  8.         if x < 70:
  9.             print("C")
  10.         else:
  11.             if x < 80:
  12.                 print("B")
  13.             else:
  14.                 if x < 90:
  15.                     print("A")
  16.                 else:
  17.                     print("S")
  18.     counts -= 1
复制代码


注意几点:
  • 每个 else: 后必须紧跟一个 if,缩进逐层加深。
  • 最后别忘记写 counts -= 1 来结束循环。
  • 这种嵌套写法虽正确,但不如使用 elif 清晰,建议优先用 elif


以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2026-9-4 09:34:32 | 显示全部楼层
这道题,能不能使用if else 嵌套的方式来写代码,如果能的话,请根据题目要求写出代码,并给出优缺点分析
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2026-9-4 09:34:38 | 显示全部楼层
新路有平宽 发表于 2026-09-04 09:34
这道题,能不能使用if else 嵌套的方式来写代码,如果 ...


可以,这道题完全可以用 `if...else` 嵌套来实现。不过要注意嵌套的写法必须逐层缩进,并且每个 `else` 后面紧跟一个 `if`。

参考代码如下:

  1. counts = 5
  2. while counts > 0:
  3.     x = input("请输入你的分数:")
  4.     x = int(x)

  5.     if x < 60:
  6.         print("D")
  7.     else:
  8.         if x < 70:
  9.             print("C")
  10.         else:
  11.             if x < 80:
  12.                 print("B")
  13.             else:
  14.                 if x < 90:
  15.                     print("A")
  16.                 else:
  17.                     print("S")

  18.     counts -= 1
复制代码


下面对这种写法进行优缺点分析:

  • 优点:完全符合题目逻辑,没有使用 `elif` 也能正确实现评级。
  • 缺点:代码缩进层级越来越深,可读性较差;如果评级档次更多,维护会变得很困难。


因此,虽然能写,但推荐使用 `elif` 的平铺写法。使用 `elif` 会让代码更清晰、更简洁,示例已在之前的回复中给出。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2026-9-4 09:46:04 | 显示全部楼层
如果题目在原来基础上添加一个要求:让程序可以不断接收输入,直至用户输入小写字母 e 结束程序,应该怎么写
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2026-9-4 09:46:13 | 显示全部楼层
新路有平宽 发表于 2026-09-04 09:46
如果题目在原来基础上添加一个要求:让程序可以不断接 ...


要实现在原题基础上“不断接收输入,直到用户输入小写字母 e 结束”,可以用 while True 循环,并在输入为 e 时使用 break 跳出循环。

参考代码如下:


  1. while True:
  2.     x = input("请输入你的分数(输入 e 结束):")
  3.     if x == 'e':
  4.         break
  5.     x = int(x)

  6.     if x < 60:
  7.         print("D")
  8.     elif x < 70:
  9.         print("C")
  10.     elif x < 80:
  11.         print("B")
  12.     elif x < 90:
  13.         print("A")
  14.     else:
  15.         print("S")
复制代码


这样,原来的 counts 就不再需要了。程序会一直询问,直到你输入小写字母 e 才结束。

需要注意的是,如果输入的是其他非数字内容(比如字母 a),程序会报错。想更健壮,可以加入异常处理:


  1. while True:
  2.     x = input("请输入你的分数(输入 e 结束):")
  3.     if x == 'e':
  4.         break
  5.     try:
  6.         x = int(x)
  7.     except ValueError:
  8.         print("输入无效,请输入数字或 e")
  9.         continue

  10.     if x < 60:
  11.         print("D")
  12.     elif x < 70:
  13.         print("C")
  14.     elif x < 80:
  15.         print("B")
  16.     elif x < 90:
  17.         print("A")
  18.     else:
  19.         print("S")
复制代码


这样就既满足不断输入的要求,又不会因误输入而退出程序。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2026-9-4 09:58:08 | 显示全部楼层
请给我解释一下答案给出的代码:
我想在这一行下边插入图片1,jpg



我想在这一行上边插入图片1,,jpg
1.jpg.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2026-9-4 09:58:22 | 显示全部楼层
新路有平宽 发表于 2026-09-04 09:58
请给我解释一下答案给出的代码:
我想在这一行下边插 ...


你询问的应该是刚才那段“不断接收输入,输入 e 结束”的代码。下面逐部分解释它的工作流程:

代码功能  
程序会一直让用户输入分数,然后输出对应的评级(D/C/B/A/S),直到用户输入小写字母 e 才停止。

代码逐行分析  
  • while True: 表示无限循环,因为条件永远为真,所以程序会一直运行下去。
  • x = input("请输入你的分数(输入 e 结束):") 等待用户输入内容,并保存为字符串变量 x
  • if x == 'e': 判断用户是否输入了字母 e
  • break 如果输入是 e,立即跳出循环,程序结束。
  • x = int(x) 如果不是 e,就把输入的字符串转换为整数,以便比较大小。
  • 后面的 if...elif...else 结构根据分数输出评级,与之前题目要求一致。


需要注意:如果用户输入的不是数字也不是 e(比如输入了字母 a),程序会因为 int(x) 转换失败而报错。因此更完善的写法是加入异常处理,例如:

  1. while True:
  2.     x = input("请输入你的分数(输入 e 结束):")
  3.     if x == 'e':
  4.         break
  5.     try:
  6.         x = int(x)
  7.     except ValueError:
  8.         print("输入无效,请输入数字或 e")
  9.         continue

  10.     if x < 60:
  11.         print("D")
  12.     elif x < 70:
  13.         print("C")
  14.     elif x < 80:
  15.         print("B")
  16.     elif x < 90:
  17.         print("A")
  18.     else:
  19.         print("S")
复制代码


关于插入图片  
我无法直接在你的帖子中插入本地图片。Discuz! 论坛通常需要你点击编辑器中的 图片按钮(或使用 上传附件 功能)将图片上传到论坛,然后再将图片插入到指定位置。请上传后,把光标放在你想插入图片的那一行,再点击已上传的图片即可。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2026-9-4 10:02:15 | 显示全部楼层
下图是原文答案,请解释一下图片给出的代码

我想在下边一行插入图片1,jpg
1.jpg
我想在上班一行插入图片1,jpg
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2026-9-4 10:02:28 | 显示全部楼层
新路有平宽 发表于 2026-09-04 10:02
下图是原文答案,请解释一下图片给出的代码

我想在 ...


很抱歉,我这里无法看到您上传的图片,所以不能直接解读图里的代码。不过根据您前面问的“不断接收输入直到输入 e 结束”这个问题,参考答案一般会写成这样:

  1. while True:
  2.     x = input("请输入你的分数(输入 e 结束):")
  3.     if x == 'e':
  4.         break
  5.     x = int(x)

  6.     if x < 60:
  7.         print("D")
  8.     elif x < 70:
  9.         print("C")
  10.     elif x < 80:
  11.         print("B")
  12.     elif x < 90:
  13.         print("A")
  14.     else:
  15.         print("S")
复制代码


这段代码的主要结构是:

- while True: 让程序一直循环,直到遇到 break
- x = input(...) 获取用户输入,注意这里得到的是字符串。
- if x == 'e': 判断用户是否输入了小写字母 e。
- break 一旦输入 e,就跳出循环,程序结束。
- x = int(x) 把字符串转换成整数,方便比较大小。
- 后面的 if ... elif ... else 就是按分数段输出 D、C、B、A、S。

如果参考答案里还有异常处理,代码可能会是这样:

  1. while True:
  2.     x = input("请输入你的分数(输入 e 结束):")
  3.     if x == 'e':
  4.         break
  5.     try:
  6.         x = int(x)
  7.     except ValueError:
  8.         print("输入无效,请输入数字或 e")
  9.         continue

  10.     if x < 60:
  11.         print("D")
  12.     elif x < 70:
  13.         print("C")
  14.     elif x < 80:
  15.         print("B")
  16.     elif x < 90:
  17.         print("A")
  18.     else:
  19.         print("S")
复制代码


这样即使用户输入了字母或符号,程序也不会报错,而是提示重新输入。

关于插入图片:  
论坛中一般要先点击编辑器工具栏的“图片”按钮上传图片。上传成功后,将光标放到您想插入图片的那一行,再点击图片,图片就会插入到光标所在位置。如果您看到图片 ID 是 208587,可以尝试在图片窗口的已上传列表里选择该图片,然后插入到合适的位置。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2026-9-4 10:03:40 | 显示全部楼层
1.jpg
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2026-9-4 10:03:48 | 显示全部楼层


您给出的图片我无法查看,因此无法直接解读图片中的代码内容。建议您把图片里的代码用文字手动输入到回复中,我会帮您逐行解释。

另外,关于图片插入问题:Discuz! 论坛需要先点击编辑器中的“图片”按钮上传图片,上传成功后再将光标放到目标行并点击图片即可插入。直接输入图片 ID 是无法显示的。

请您用文字把代码发出来,我可以解释它的运行逻辑。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2026-9-4 10:07:33 | 显示全部楼层
  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("请输入你的分数:")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2026-9-4 10:07:45 | 显示全部楼层    本楼为最佳答案   
新路有平宽 发表于 2026-09-04 10:07
score = input("请输入你的分数:")

while score ! ...


你给出的代码片段不完整,我只看到前半部分。结合题目“输入 e 结束”的常见答案,完整写法通常是这样的:


  1. score = input("请输入你的分数:")

  2. while score != 'e':
  3.     score = int(score)

  4.     if score < 60:
  5.         print("D")
  6.     if 60 <= score < 70:
  7.         print("C")
  8.     if 70 <= score < 80:
  9.         print("B")
  10.     if 80 <= score < 90:
  11.         print("A")
  12.     if score >= 90:
  13.         print("S")

  14.     score = input("请输入你的分数:")
复制代码


解释一下这段代码的思路:

- 第一行先输入一次分数,用来作为 while 条件判断的初始值。
- while score != 'e' 表示:只要用户输入的不是小写字母 e,就一直循环。
- 进入循环后,先用 int(score) 把字符串转成整数,方便比较大小。
- 然后用多个独立的 if 判断分数区间,分别输出 D、C、B、A、S。
- 注意循环末尾必须重新执行一次 input 来更新 score,否则 score 永远是同一个整数,循环会无限执行下去。

你粘贴的内容里只写到 if 60,后面被截断了。如果后面是 if 60 <= score < 70: 这样的写法,是完全可以的,但要保证每个条件都写完整,并且在循环末尾重新让用户输入分数。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-9-18 23:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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