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
相关产品推荐
相关产品推荐

