Python循环疑问:如何实现收集超2个非重复值后空值才退出
问题解答
原代码循环提前退出的原因
你的循环条件写的是while len(my_names) < 2,这意味着只要列表内元素数量达到2,循环的判断条件就不成立,会直接终止循环。continue只是跳过当前循环的剩余代码、进入下一次循环的条件判断,当条件不满足时,不管有没有continue,循环都会结束。
修改方案
要实现「至少收集2个不重复名称,之后用户输入空值才终止」的需求,需要把循环改成无限循环(while True),在内部分情况处理不同输入场景:
- 列表元素不足2个时,空输入仅提示用户继续输入,不终止;
- 列表元素≥2个时,空输入直接触发循环终止;
- 始终过滤重复名称。
修改后的代码如下:
my_names = [] while True: my_name = input("Enter a name: ").strip().lower() # 处理空输入逻辑 if my_name == "": if len(my_names) < 2: print("Minimum 2 names. Please keep entering.") continue else: print("Input empty, terminating the program.") break # 处理重复名称逻辑 if my_name in my_names: print("No duplicate name...re-enter") continue # 符合条件的名称加入列表 my_names.append(my_name) print(f"Current names: {my_names}")
修改后效果:
- 列表名字不足2个时,空输入会被要求继续输入;
- 拥有2个及以上不重复名称后,空输入会终止循环;
- 重复名称会被拒绝,要求重新输入。
内容的提问来源于stack exchange,提问作者xXSnowieXx
相关产品推荐
相关产品推荐

