qichenle 发表于 7 天前

求解答,python第二版第六讲课后题这样写会有什么问题吗?

不知道这样写会不会在什么神奇的地方出现bug,单是运行一段好像还是没什么问题
while 1+1==2:
    x=input("请输入你的分数:")
    if x=="e":
      break
    x=int(x)
    if x<60:
      print("D")
    if 60<=x<80:
      print("C")
    if 80<=x<=90:
      print("B")
    if 90<=x<100:
      print("A")
    if x==100:
      print("S")

FishC 发表于 7 天前

你的代码有几个潜在问题,我来分析一下:

1. 输入非数字或非'e'会导致崩溃
当用户输入的不是数字也不是"e"时(比如输入"abc"),int(x)会抛出ValueError异常

2. 代码不完整
最后一行if x缺少条件和执行语句,会导致IndentationError

3. 循环条件过于复杂
while 1+1==2等价于while True,但后者更简洁直观

改进建议:

while True:
    x = input("请输入你的分数(输入e退出): ")
    if x.lower() == 'e':# 兼容大写E
      break
   
    try:
      score = int(x)
    except ValueError:
      print("请输入数字!")
      continue# 跳过后续代码重新输入
   
    # 补充完整的分数判断逻辑(示例)
    if score >= 90:
      print("优秀")
    elif score >= 60:
      print("及格")
    else:
      print("不及格")


主要改进点:
1. 使用try-except捕获转换异常
2. 添加.lower()使'e'和'E'都能退出
3. 用continue跳过错误输入的后续处理
4. 补全分数判断逻辑
5. 添加明确的输入提示

这样修改后程序会更健壮,能处理各种异常输入情况~

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

某一个“天” 发表于 7 天前

没bug
但最好改成while True

ydwb 发表于 5 天前

请输入你的分数:90
B
A
请输入你的分数:
页: [1]
查看完整版本: 求解答,python第二版第六讲课后题这样写会有什么问题吗?