如何在代码中加入循环,持续校验直至获取符合规则的用户输入
解决方案
核心用无限循环配合条件判断实现持续询问,输入符合要求时终止循环即可。另外你原代码还存在几个逻辑问题需要同步修正:
- 范围判断错用
or,会导致所有数字都能通过校验,需改为and同时满足两个范围条件 - 不要用
eval()处理用户输入,存在安全风险,换成int()做类型转换即可 - 缺少非数字输入的异常捕获,用户输入非数字内容时会直接崩溃
完整可运行代码
print('欢迎来到我的石头剪刀布游戏!') print() # 无限循环获取合规的游戏局数 while True: try: user_action = int(input('请输入游戏局数,要求为3到11之间的奇数:')) except ValueError: print('输入无效,请输入数字!') continue # 同时校验范围和奇偶性 if 3 <= user_action <= 11 and user_action % 2 == 1: # 校验通过跳出循环 break # 校验不通过提示重试,自动进入下一轮循环 print('抱歉,输入不符合要求,请重新输入!') # 后续游戏逻辑 print("\n\n第1局 \n 请输入(R)石头、(P)布、(S)剪刀")
逻辑说明
while True会启动无限循环,没有触发break语句的情况下会一直重复执行循环内的代码try...except用来捕获用户输入非数字的异常,避免程序直接崩溃- 每次输入都会同步校验范围和奇偶性,校验不通过就会提示重试,自动回到输入步骤
内容的提问来源于stack exchange,提问作者Jermaine Jenkins
相关产品推荐
相关产品推荐

