鱼C论坛

 找回密码
 立即注册
查看: 54|回复: 2

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

[复制链接]
发表于 前天 11:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
不知道这样写会不会在什么神奇的地方出现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")
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 前天 11:02 | 显示全部楼层
你的代码有几个潜在问题,我来分析一下:

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

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

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

改进建议:

  1. while True:
  2.     x = input("请输入你的分数(输入e退出): ")
  3.     if x.lower() == 'e':  # 兼容大写E
  4.         break
  5.    
  6.     try:
  7.         score = int(x)
  8.     except ValueError:
  9.         print("请输入数字!")
  10.         continue  # 跳过后续代码重新输入
  11.    
  12.     # 补充完整的分数判断逻辑(示例)
  13.     if score >= 90:
  14.         print("优秀")
  15.     elif score >= 60:
  16.         print("及格")
  17.     else:
  18.         print("不及格")
复制代码


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

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

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

使用道具 举报

发表于 前天 12:45 | 显示全部楼层
没bug
但最好改成while True
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-21 14:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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