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

Python实现逐个校验列表输入值有效性的代码问题求助

问题排查与修复

原代码的核心问题是用for循环遍历天数时,一旦检测到无效值就执行break直接终止整个输入流程,无法重新输入当前项;同时代码未处理输入非数值的异常情况,会导致程序崩溃。

以下是修复后的代码:

while True:  
    try:
        Day_list = []
        days = int(input("Enter number of days: "))
        # 校验天数为正整数
        if days <= 0:
            print("Number of days must be a positive integer, try again")
            continue
        break
    except ValueError:
        print("Please enter a valid integer for days.")

# 逐个获取每天的数值,确保当前项输入有效后再进入下一项
for i in range(days): 
    while True:
        try:
            day_value = float(input(f"Enter the day {i+1}: "))
            if 0 <= day_value <= 10:
                Day_list.append(day_value)
                print('good')
                break  # 当前项输入有效,跳出内层循环,处理下一天
            else:
                print('Amount must be between 0 and 10, try again')
        except ValueError:
            print("Please enter a valid number.")

print("All inputs completed. Your list:", Day_list)

关键改动说明:

  • 对总天数的输入增加正整数校验,避免输入0或负数的无效情况。
  • 为每天的输入嵌套while True循环:只有输入是有效数值且在0-10范围内时,才将值加入列表并进入下一项;否则持续提示重新输入当前项。
  • 新增非数值输入的异常捕获,防止程序因输入字符串等内容崩溃。
  • 移除原代码中终止整个流程的break,改为控制内层循环的逻辑,确保当前项输入正确后才推进流程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 11:50:24