Python程序故障排查:处理非数字输入并收集10个有效元素
修改方案:处理非数字输入并修复索引显示问题
原代码存在两个明显问题:一是未处理非数字输入的异常场景,二是用list.index(y)获取索引时,遇到重复偶数会返回第一个匹配项的索引,导致结果不准确。下面是修正后的完整代码:
num_list = [] even_count = 0 even_indices = [] # 收集10个合法数字 while len(num_list) < 10: try: number = int(input("Enter a number: ")) num_list.append(number) except ValueError: print("输入错误,请输入有效的整数!") # 统计偶数数量并记录索引 for idx, num in enumerate(num_list): if num % 2 == 0: even_count += 1 even_indices.append((idx, num)) # 输出结果 print(f"偶数的数量: {even_count}") for idx, num in even_indices: print(f"索引 [{idx}]: {num}")
关键修改说明:
- 非数字输入处理:用
while循环配合try-except捕获ValueError,当用户输入字符、小数等非整数内容时,直接提示错误并重新请求输入,直到收集满10个有效数字。 - 索引准确性修复:改用
enumerate()遍历列表,同时获取元素的索引和数值,彻底解决原代码中重复偶数索引显示错误的问题。 - 变量命名优化:把
list改成num_list(避免和Python内置类型重名),even改成even_count,让变量名更具可读性。
内容的提问来源于stack exchange,提问作者rin
相关产品推荐
相关产品推荐

