Python保龄球分数统计代码如何限制输入范围并避免回车报错
保龄球分数统计代码修改方案
现有代码存在两个核心问题:
- 未对输入内容做合法性校验,空输入、非数字输入直接转int会触发ValueError崩溃
- 未限制分数范围,会存储0-300以外的无效分数
修改后的完整代码
# 存储有效分数 nums = [] # 循环接收用户输入 while True: scores = input("Please enter a score (xxx) or 'q' to exit: ") # 先判断是否退出 if scores.lower() == 'q': print("quitting") break # 处理非退出输入的校验逻辑 try: score = int(scores) except ValueError: # 空输入、非数字内容都会走这个分支 print("无效输入,请输入0-300之间的数字或者'q'退出") continue # 校验分数范围 if 0 <= score <= 300: nums.append(score) else: print("分数超出合法范围(0-300),请重新输入") continue # 空列表判断,避免除以零报错 if not nums: print("未输入任何有效分数") else: total = sum(nums) print("") print(f"You played {len(nums)} games") print(f"The total score is: {total}") average = total / len(nums) print("The score average is: ", round(average, 2))
关键修改说明
- 新增异常捕获逻辑:用
try...except包裹输入转int的逻辑,遇到空输入、非数字输入时直接提示错误并跳过后续逻辑,回到输入等待阶段 - 新增分数范围校验:转成整数后判断是否在0-300区间内,仅合法值才存入列表
- 调整统计逻辑位置:将总分、平均分计算移到循环结束后,避免循环内重复无意义计算
- 新增空列表判断:防止未输入任何有效分数时,计算平均分触发除以零的错误
内容的提问来源于stack exchange,提问作者Ryan B
相关产品推荐
相关产品推荐

