Python多玩家猜数字游戏答对后未触发胜利提示如何修复?
多玩家猜数字脚本bug修复方案
问题根因
现有代码的逻辑缺陷是猜对数字后无法即时终止流程:
- 当某玩家输入正确数值时,仅修改了
attempt变量的值,没有中断当前遍历玩家的for循环,程序会继续要求后续玩家输入答案 while的终止条件仅在每一轮所有玩家都完成答题后才会校验,没法即时响应猜对的场景
修复方法
在判断玩家猜对数字的分支中,直接输出获胜提示并终止全部流程即可,也可以通过标记位的方式逐层跳出循环,这里提供两种常用修复方案:
方案1:直接终止程序(逻辑最直观)
while attempt != number: count += 1 if count > max_count: print(f'所有玩家已使用{count-1}次机会,全部挑战失败') break print(f'第 {count} 轮答题') for player in players: print(f'玩家 {player} 的答题回合') attempt = int(input('请输入你猜的数字:')) if attempt > number: print('不对,再猜小一点') elif attempt < number: print('不对,再猜大一点') else: print(f'恭喜玩家 {player} 猜对了,你获胜了!') # 直接终止程序,无需执行后续逻辑 exit()
方案2:标记位逐层跳出循环(不强制终止程序)
is_win = False while attempt != number and not is_win: count += 1 if count > max_count: print(f'所有玩家已使用{count-1}次机会,全部挑战失败') break print(f'第 {count} 轮答题') for player in players: print(f'玩家 {player} 的答题回合') attempt = int(input('请输入你猜的数字:')) if attempt > number: print('不对,再猜小一点') elif attempt < number: print('不对,再猜大一点') else: print(f'恭喜玩家 {player} 猜对了,你获胜了!') is_win = True break
内容的提问来源于stack exchange,提问作者Georgy Rakhaev
相关产品推荐
相关产品推荐

