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

Python猜数字游戏双函数自动执行 如何仅运行指定函数

问题说明

你编写的猜数字游戏包含两个核心函数:

  • guess:实现用户猜测电脑随机生成数字的常规玩法
  • computer_guess:实现反向玩法,由电脑猜测用户提前选定的数字
    原代码运行时两个函数会依次自动执行,需要调整代码结构实现按需选择运行指定玩法。
问题原因

原代码在全局作用域直接写了函数调用逻辑:定义完guess函数后立刻执行了获取上限、调用guess的代码,定义完computer_guess后又直接写了computer_guess(100)的调用语句。Python运行脚本时会从上到下顺序执行所有全局作用域的代码,因此两个玩法会依次自动运行。

修改方案
  1. 删除全局作用域下的直接函数调用代码
  2. 使用Python标准入口判断if __name__ == "__main__":包裹启动逻辑,在程序启动时先让用户选择要玩的模式,再根据选择调用对应函数即可
  3. (可选优化)原代码中guess函数内部的循环变量和函数同名,容易引发隐性变量冲突,修改时将内部变量重命名区分,可读性更好

修改后的完整代码如下:

import random

def guess(x):
    random_number = random.randint(1, x)
    user_guess = 0
    while user_guess != random_number:
        user_guess = int(input(f'Guess a number between 1 and {x}:'))
        if user_guess < random_number:
            print('Sorry, guess again. Too low.')
        elif user_guess > random_number:
            print('Sorry, guess again. Too high.')
    
    print(f'You guessed it bro, it was {random_number}')

def computer_guess(x):
    low = 1
    high = x
    feedback = ''
    while feedback != 'c':
        if low != high:
            comp_guess = random.randint(low, high)
        else:
            comp_guess = low # 高低边界相等时就是最终答案
        feedback = input(f'Is {comp_guess} too high (H), too low (L), or correct (C)?').lower()
        if feedback == 'h':
            high = comp_guess - 1
        elif feedback == 'l': 
            low = comp_guess + 1

    print(f'The computer guessed your number, {comp_guess}, correctly')

if __name__ == "__main__":
    print("=== 猜数字游戏 ===")
    print("1. 你猜电脑生成的数字")
    print("2. 电脑猜你选定的数字")
    mode_select = input("请选择模式(输入1或2):")
    if mode_select == "1":
        upper_limit = int(input('请输入数字上限:'))
        guess(upper_limit)
    elif mode_select == "2":
        upper_limit = int(input('请输入你要猜的数字的最大上限:'))
        computer_guess(upper_limit)
    else:
        print("输入无效,请重新运行程序选择正确模式")
补充说明
  • if __name__ == "__main__":是Python脚本的标准写法,加了这个判断后,只有你直接运行当前脚本时,里面的交互逻辑才会执行;如果后续你把这个文件作为模块导入到其他代码中,游戏不会自动触发运行。
  • 运行修改后的脚本,会先弹出模式选择菜单,输入对应编号就只会运行你选中的单个玩法,不会出现两个函数顺次执行的问题。

内容的提问来源于stack exchange,提问作者Python Beginner

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 23:27:09