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

Python保龄球分数统计输入q退出触发NameError如何解决

报错核心原因
  • 你当前使用的是Python 2.x版本运行代码:Python 2中的input()函数会将用户输入的内容直接当作Python表达式解析执行,输入q时系统会尝试查找名为q的变量,找不到就抛出NameError。Python 3中input()默认返回字符串,不会出现该问题。
  • 你的代码本身还存在多处逻辑漏洞:没有适配大写Q的退出判定、将函数定义和求和逻辑放在循环内重复执行、没有做非法输入校验、空输入场景下求平均会触发除零错误。
修复后可直接运行的代码
nums = []

def Average(nums):
    return sum(nums) / len(nums)

while True:
    # 如果是Python 2运行,将下方input替换为raw_input即可
    scores = input("Please enter a score (xxx) or 'q' to exit: ").strip().lower()
    if scores == 'q':
        print("quitting")
        break
    # 校验输入是否为合法数字
    try:
        score_num = int(scores)
        nums.append(score_num)
    except ValueError:
        print("输入不合法,请输入数字或者q/Q退出")

total = sum(nums)
print(f"The total score is: {total}")
if nums:
    average = Average(nums)
    print("The score average is: ", round(average, 2))
else:
    print("未录入任何分数,无法计算平均分")
修复说明
  • 输入统一转为小写判断,同时支持q和Q触发退出
  • 将函数定义、统计逻辑移到循环外部,避免重复执行
  • 增加异常捕获逻辑,非数字、非退出指令的输入会提示重入,不会直接崩溃
  • 增加空数组判定,用户未录入任何分数直接退出时不会触发除零错误
  • 简化循环逻辑,去除冗余判定

内容的提问来源于stack exchange,提问作者Ryan B

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 23:15:03