三个草莓 发表于 2025-6-1 18:19:39

代码问题

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("请输入你的分数:")

这是第六讲作业题,答案如上,为什么要多出最后一行代码?

FishC 发表于 2025-6-1 18:20:51

以下是修正后的代码及解析:

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

while score != 'e':
    try:
      score_num = int(score)# 转换为整数
    except ValueError:
      print("输入错误!请输入数字或'e'退出")
      score = input("请输入你的分数:")
      continue# 跳过后续代码,重新输入

    if score_num < 0 or score_num > 100:
      print("分数必须在0-100之间")
    elif score_num < 60:
      print("D")
    elif score_num < 70:   # 60-69分
      print("C")
    elif score_num < 80:   # 70-79分
      print("B")
    else:               # 80-100分
      print("A")
   
    score = input("请输入你的分数:")# 循环末尾重新获取输入

主要修复的问题:

[*]1. int(score) 未处理非数字输入 → 添加了 try-except 捕获异常
[*]2. 缺少退出机制 → 输入 e 可退出循环
[*]3. 条件判断不完整 → 补全分数分级逻辑:
[*]0-59: D
[*]60-69: C
[*]70-79: B
[*]80-100: A
[*]4. 死循环问题 → 在循环末尾重新获取 score 输入
[*]5. 添加分数范围校验 → 确保分数在0-100之间


使用示例:
请输入你的分数:85
A
请输入你的分数:62
C
请输入你的分数:e
(程序退出)

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

player-none 发表于 2025-6-1 18:38:17

因为第一次输入在循环外,之后若不重新输入,循环每次判断的都是第一次输入的内容了。这段代码是在每次判断完之后再次从用户这里要分数。

player-none 发表于 2025-6-1 18:40:57

原来代码确实可以精简:

score = ''
while score != 'e':
    score = int(input("请输入你的分数:"))
    if score < 60:
      print("D")
    elif score < 80:
      print("C")
    elif score < 90:
      print("B")
    elif score < 100:
      print("A")
    elif score == 100:
      print("S")

三个草莓 发表于 2025-6-1 19:44:57

player-none 发表于 2025-6-1 18:38
因为第一次输入在循环外,之后若不重新输入,循环每次判断的都是第一次输入的内容了。这段代码是在每次判断 ...

懂了懂了,谢谢你啊

kebi 发表于 2025-6-9 02:34:34

循环问题,老师用得好
页: [1]
查看完整版本: 代码问题