Python如何实现循环重复执行直到输入正确有效值
问题解决方案
核心问题说明
你提供的代码无法实现重复输入校验的核心原因是:循环内部没有新增获取用户输入的逻辑,value变量始终使用进入循环前的初始值,不管用户后续有没有输入,判断逻辑永远只会校验第一次的输入值。同时原代码还存在冗余问题:合法球队列表重复编写了两次、同一个判断逻辑拆分了两个独立if语句。
修正后的完整实现代码
from tabulate import tabulate def query_team_info(data, options): # 预先定义合法球队列表,后续修改仅需调整此处 valid_teams = ['man united', 'man city', 'liverpool', 'chelsea'] while True: # 每次循环都重新获取用户输入 value = input("请输入需要查询的球队名称:").strip() if value in valid_teams: print(tabulate(data[value])) break # 不在合法列表内就提示错误后重新进入下一轮循环 else: print("您输入的选项有误,请输入正确的选项") print(f"可选球队列表:{options}")
优化点说明
- 新增
input()逻辑在循环内部,每次校验失败后都会等待用户输入新的内容 - 输入时调用
.strip()自动去除首尾空格,避免用户误输入空格导致合法值判断失败 - 把重复的合法球队列表抽成独立变量,后续维护调整时仅需修改一处即可
- 合并两个独立
if判断为if...else结构,逻辑更简洁清晰
内容的提问来源于stack exchange,提问作者Jack Crosbie
相关产品推荐
相关产品推荐

