Python开发Bulls and Cows游戏时输入校验的循环控制问题求助
Bulls and Cows猜数字游戏输入验证问题修复
你的代码核心问题是只要有一个数字验证通过就会把flag设为1,导致即使存在非法输入(比如1, a , 2里的a),循环也会提前结束。以下是修复后的代码,同时修正了原代码的语法错误:
flag = 0 while flag == 0: valid = True num = input('请输入3个数字(例:1, 2, 3): ').split(', ') # 先检查是否恰好输入3个数字 if len(num) != 3: print('请输入恰好3个数字') continue for i in range(3): # 检查输入是否为纯数字 if not num[i].isdigit(): print('请仅输入数字') valid = False break # 转换为整数并检查是否在0-9范围内 num_int = int(num[i]) if num_int < 0 or num_int > 9: print('数字必须是0-9的个位数') valid = False break # 只有所有验证都通过,才结束输入循环 if valid: flag = 1 # 可在此处添加后续游戏逻辑,比如转换为整数列表 num = [int(n) for n in num] print(f'输入合法,你输入的数字是:{num}')
关键修改说明
- 新增
valid变量:默认标记输入合法,遇到任何非法情况就改为False,避免单个合法数字直接触发循环结束 - 前置数量检查:先判断输入分割后是否恰好3个元素,不符合直接提示并重新输入
- 修正语法错误:原代码中
int(num[i]<0的括号位置错误,已调整为正确的类型转换和范围判断 - 统一验证逻辑:只有当所有3个数字都通过验证时,才设置
flag=1结束输入循环
这样修改后,不管输入中存在多少个非法元素,只要有一个不满足要求,就会让用户重新输入,完全符合你的需求。
内容的提问来源于stack exchange,提问作者user20323619
相关产品推荐
相关产品推荐

