You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何优化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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 01:57:23