Python循环内调用input函数引发报错?如何存储输入值
问题分析与解决方案
你的代码不会报错,但逻辑不符合预期——它会在循环的每一次迭代中都要求你输入一次内容,而不是输入一个名字后自动匹配所有联系人。
问题根源
每次执行input()函数都会触发一次用户输入请求,你把input()写在循环的if判断里,意味着每遍历一个联系人,程序就会停下来让你输入一次。比如:
- 第一次循环检查James,需要你输入一次
- 第二次循环检查Amy,又要你输入一次
- 以此类推
这既不是循环跳过输入,也不是输入值没存内存,而是你重复调用了输入函数,导致每次循环都重新获取输入。
正确实现(输入一次匹配所有联系人)
如果你想输入一个名字,然后检查这个名字是否在联系人列表里,应该把输入操作放在循环外面,把输入值存到变量中,再在循环里用这个变量做匹配:
contacts = [ ('James', 42), ('Amy', 24), ('John', 31), ('Amanda', 63), ('Bob', 18) ] # 只输入一次,把值存到变量里 user_input = input() for contact in contacts: if user_input == contact[0]: print("it works bro")
如果你非要在循环内处理输入(仅输入一次)
如果想把输入逻辑放在循环里,但只输入一次,可以用一个标志位控制:
contacts = [ ('James', 42), ('Amy', 24), ('John', 31), ('Amanda', 63), ('Bob', 18) ] user_input = None for contact in contacts: if not user_input: user_input = input() if user_input == contact[0]: print("it works bro")
内容的提问来源于stack exchange,提问作者Thamsanqa Sithole
相关产品推荐
相关产品推荐

