Python无法将多次用户输入存入列表,请求代码问题排查
问题分析与修复
错误原因
- 列表被重复初始化:每次
while循环都会执行lst = [input('Enter name here: ')],这会创建一个仅包含当前输入的新列表,直接覆盖之前存储的所有输入,最终列表里只剩最后一次输入的内容,所以统计次数必然是1。 - 重复输出相同元素:即使保留了所有输入,原代码遍历列表时,相同名字会被多次输出(比如输入两次"bob",会打印两行"2 BOB")。
修复后的代码
lst = [] while True: try: name = input('Enter name here: ') lst.append(name) except KeyboardInterrupt: # 统计每个名字的出现次数 name_counts = {} for name in lst: name_counts[name] = name_counts.get(name, 0) + 1 # 输出结果 for name, count in name_counts.items(): print(count, name.upper()) break
修复说明
- 将列表初始化移到循环外部,循环内用
append()方法添加输入,确保所有输入都被保留在列表中。 - 使用字典
name_counts统计每个名字的出现次数,避免重复输出相同名称,同时提升统计效率。 - 添加
break语句,捕获KeyboardInterrupt后退出循环,防止程序继续等待输入。
内容的提问来源于stack exchange,提问作者Manansh Arora
相关产品推荐
相关产品推荐

