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

Python导入外部文件后主程序未正常运行问题求助

问题根源

Python导入模块时,模块内所有顶级代码(未封装在函数、类或if __name__ == "__main__"块中的代码)会自动执行。你遇到的情况是:Number_guesser_main.py里的ans1 = typing_with_user_input(...)属于顶级代码,所以在你导入模块的瞬间就触发了输入,而非等到调用start_number_guesser函数时才执行。

解决办法

1. 用if __name__ == "__main__"隔离模块的执行代码

修改Number_guesser_main.py的结构,把原本直接写在外面的启动代码放进这个判断块里:

def start_number_guesser():
    # 把猜数字游戏的输入、流程逻辑都封装到函数内部
    ans1 = typing_with_user_input(f"Hello! Would you like to play the number guessing game? (Y/N) ")
    # 后续游戏相关代码...

# 只有直接运行这个模块时,才会执行下面的代码
if __name__ == "__main__":
    start_number_guesser()

这个判断的作用是:当你直接运行Number_guesser_main.py时,__name__的值是__main__,代码块会执行;当模块被其他程序导入时,__name__是模块名(Number_guesser.Number_guesser_main),这部分代码不会触发。

2. 确保游戏启动逻辑完全封装在函数内

检查start_number_guesser函数,把所有和游戏启动相关的代码(包括那个输入语句)都移到函数内部。这样只有当你在主程序中主动调用start_number_guesser()时,猜数字游戏的输入才会弹出。

验证步骤

修改完成后,在主程序中正常导入并调用:

from Number_guesser.Number_guesser_main import start_number_guesser

# 主程序自身的输入逻辑
ans1 = typing_with_user_input_main_program("Welcome to Minigame land! Would you like to play? (Y/N) ")
# 当用户选择要玩时,再调用猜数字游戏
if ans1.lower() == 'y':
    start_number_guesser()

此时主程序会先显示自己的输入语句,只有当你触发start_number_guesser调用时,猜数字游戏的输入才会出现。

内容的提问来源于stack exchange,提问作者Wolf Boy 250

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 08:43:19