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

如何确保用户输入超出0-300范围时重输?代码问题求助

问题修复方案

你的代码后续分数的范围校验失效,核心原因是误用了or逻辑运算符。比如((Score1 or Score2)> 300)这种写法在Python中不会逐个判断分数是否超出范围,而是返回第一个非零数值(非零值在布尔判断中为真),导致无法正确检测后续输入的非法分数。

快速修复步骤(无需大幅修改代码)

对每个后续分数的校验逻辑,只针对当前输入的分数做范围判断,完全照搬第一个分数Score1的校验方式:

  1. 修改Score2的校验:
    将
if ((Score1 or Score2)> 300) or ((Score1 or Score2)< 0):

替换为

if (Score2 > 300) or (Score2 < 0):
  1. 批量修改Score3到Score10的校验:
    每个分数的判断都只检查当前的ScoreX,比如Score3的判断改为:
if (Score3 > 300) or (Score3 < 0):

以此类推,直到完成Score10的校验逻辑修改。

可选小优化(不破坏原有结构)

当前代码中如果某个分数不合法,continue会回到循环开头,导致之前输入的有效分数全部丢失。可以给每个分数的输入单独加一个小循环,只重新输入当前非法的分数,以Score2为例:

# 修改后的Score2输入逻辑
while True:
    Score2=int(input("Enter your 2nd score:"))
    if (Score2 > 300) or (Score2 < 0):
            print("Please enter a Number from 0 and 300 included!")
            continue
    break

这样用户输入非法分数时,只会重新输入当前项,不会丢失之前的有效输入,且改动幅度极小。

内容的提问来源于stack exchange,提问作者AMOS SODJAHIN

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 17:25:30