如何用while循环收集用户输入至列表?解决循环无法终止问题
解决while循环无法终止的问题
嘿,我来帮你排查下这个循环的问题!你的代码逻辑思路是对的,但核心问题出在列表的append()方法返回值上,导致循环永远触发不了终止条件。
问题根源
你写的question = questionList.append(input("Whats your question? "))这行代码有问题:Python里列表的append()方法是没有返回值的(或者说返回None),所以每次执行这行后,question变量都会被赋值为None。
这样一来:
question in questionList永远是False(因为None不在你的列表里)question == "none"也永远是False(None和字符串"none"完全不是一回事)
自然循环就停不下来了!
修正后的代码
我们调整一下逻辑顺序,先获取用户输入,再做判断,最后添加到列表:
questionList = [] while True: # 先获取用户输入,存到question变量里 question = input("Whats your question? ") # 优先处理终止指令:输入"none"就停止循环 if question.lower() == "none": break # 再检查是否重复输入 if question in questionList: print("这个问题已经提交过啦!") break # 都不满足的话,把问题添加到列表里 questionList.append(question)
代码解释
- 用
while True创建无限循环,这样我们可以在内部根据条件主动跳出,逻辑更直观。 - 先单独获取用户输入到
question,保证变量里存的是用户实际输入的内容,而不是append()返回的None。 - 先判断是否输入了"none"(用
lower()是为了兼容大小写,比如用户输入"None"或"NONE"也能触发终止,不需要的话可以去掉)。 - 再检查问题是否已经在列表中,是的话提示用户并终止循环。
- 最后把符合要求的问题添加到列表,循环继续执行。
这样就能完美实现你想要的功能:用户重复输入问题,直到输入"none"或者重复内容,所有有效输入都存入列表~
内容的提问来源于stack exchange,提问作者Javonne
相关产品推荐
相关产品推荐

