You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python try/except块多尝试查询时有效输入仍触发异常问题排查

问题原因
  • 原代码try块内的for循环逻辑存在错误:会强制依次查询d1、d2两个字典,只要任意一次查询失败就会触发全局异常。
  • 当输入合法字母等级时,在d1中查询成功后,仍会继续查询d2,而d2的键均为绩点值,不存在对应的字母等级键,必然触发KeyError进入异常分支。
  • 当输入合法绩点时,首先查询d1就会失败,直接触发异常,不会执行后续d2的查询逻辑。
修复方案

调整查找逻辑:优先尝试字母转绩点的查询,失败后再尝试绩点转字母的查询,两次查询均失败才判定为输入无效。修复后代码如下:

d1 = {
    'A+': '4.0',
    'A-': '3.7',
    'B+': '3.3',
    'B': '3.0',
    'B-': '2.7',
    'C+': '2.3',
    'C': '2.0',
    'C-': '1.7',
    'D+': '1.3',
    'D': '1.0',
    'F': '0',
}
# 用字典推导式简化反向字典生成逻辑
d2 = {value: key for key, value in d1.items()}

s = input('Enter a grade point: ')
while s != '':
    s = s.upper()
    # 依次查询两个字典,任意查询成功则取值,否则返回None
    gp = d1.get(s) or d2.get(s)
    if gp:
        print(gp)
    else:
        print('Invalid input')
    s = input('Enter a grade point: ')

内容的提问来源于stack exchange,提问作者Zy Taga

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 07:15:01