如何优化Python猜数字游戏代码 精简重复if判断提升效率
Python猜数字游戏冗余判断逻辑优化方案
你当前代码的核心问题是重复编写了完全一致的猜测结果判断逻辑,既增加了后续维护成本,还附带了次数计数不准、无效判断等小bug,完全可以通过调整循环结构收拢逻辑,删掉冗余代码。
原代码存在的具体问题
- 猜测值偏高/偏低、次数耗尽的if判断逻辑重复写了2次,后续如果要调整提示文案、修改判断规则需要同步改两处,很容易出现逻辑不一致的问题
- 次数计数逻辑有bug:初始设置4次机会,但第一次猜测没有扣减次数,进入循环后才开始计数,实际玩家可猜测次数和规则不符
- 第一次猜测前写的
if attempt_num < 1判断是完全无效的,因为attempt_num初始值为4,这个分支永远不会触发 - 用
exit()强制退出程序的写法不够优雅,完全可以通过函数返回、循环条件判断实现流程控制
优化思路
- 把所有猜测输入、结果判断逻辑全部收拢到循环内部,不需要单独在循环外写第一次猜测的逻辑
- 循环条件直接绑定剩余猜测次数,只要还有剩余次数就允许玩家输入猜测
- 结果判断逻辑只编写一次,所有猜测分支共用这套逻辑,从根源上消除重复代码
- 猜中数字后直接结束函数返回结果,次数耗尽后自动退出循环打印游戏结束提示
优化后可直接运行的代码
import random def guess(x): ran_num = random.randint(1, x) attempt_num = 4 # 玩家总共拥有4次猜测机会 while attempt_num > 0: # 根据剩余次数匹配不同的输入提示 if attempt_num == 4: current_guess = int(input(f'type number guess from 1 to {x} ')) else: current_guess = int(input(f'oh no, your number is incorrect, please type that again, you gots {attempt_num} attempts left ')) # 统一的结果判断逻辑,仅编写一次 if current_guess == ran_num: print("success") return elif current_guess < ran_num: print('your guess was a bit low') else: print('your guess was all too high') # 每次猜测完成后扣减1次剩余机会 attempt_num -= 1 # 循环正常结束说明次数耗尽,玩家失败 print('game over') guess(5)
优化效果
- 重复的if判断逻辑完全合并,代码冗余度大幅降低,后续维护只需要修改单处判断逻辑即可
- 修复了原代码的次数计数bug,严格保证玩家只有4次猜测机会,符合游戏规则
- 去掉了无效判断和强制退出的写法,流程控制更符合Python编码习惯,可读性更高
- 逻辑边界更清晰,不会出现第一次猜测不扣次数、提示剩余次数不准的问题
内容的提问来源于stack exchange,提问作者San Kool
相关产品推荐
相关产品推荐

