Python如何用while循环实现持续输入校验直到匹配字典键返回对应值
问题原因
- while循环内部的
break多余:无论重新输入的姓名是否匹配字典键,都会在第一次循环后直接跳出,无法持续校验输入 - 循环外的
break属于语法错误,没有嵌套在循环/分支结构中无法运行 - 多余的break打断了while-else的执行逻辑,匹配成功后的输出语句无法正常触发
修正后代码(更适合初学者理解的写法)
list_dict = {"James" : "Pen Set", "Tim" : "Geometry Box", "Rocky" : "Sticky Notes" , "Jeff" : "Alarm Clock" , "Sandy" : "Highlighters"} # 开启无限循环,匹配到有效输入才会终止 while True: _name = input("Enter Name: ") # 判断输入是否在字典键中 if _name in list_dict: print(_name, "got", list_dict[_name]) # 匹配成功,终止循环 break # 匹配失败,提示后自动进入下一轮输入 print("Input name does not exist, please re-enter.")
逻辑说明
while True会一直循环执行内部代码,只有碰到break语句才会终止- 每次输入后优先判断是否属于字典的有效键:有效则输出结果终止程序,无效则提示重新输入
- 无需额外定义变量存储匹配结果,逻辑简单易懂,不会出现空值判断的歧义
内容的提问来源于stack exchange,提问作者James2021
相关产品推荐
相关产品推荐

