input()导致无法打包成exe的问题

要解决打包成EXE后程序运行一闪而过的问题,同时避免使用input()导致的打包问题,可以采用以下几种方法:

解决方案

方法1:使用 os.system('pause')(Windows专用)

import os

title = """
编程求解:鸡兔同笼问题
---------------------------------
程序设计:王小二
"""

txt="""
鸡兔同笼
    鸡兔同笼是我国古代著名趣题之一。大约在1500年前,《孙子算经》中就记载了这个有趣的问题。书中是这样叙述的:“今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?
    """

print(title, txt)
print()

print('解:')
for a in range(35):
    for b in range(35):
        if a + b == 35 and 2 * a + 4 * b == 94:
            print(f'鸡:{a} 只\t兔:{b} 只')

os.system('pause')  # 替代 input(),按任意键继续

方法2:使用 time.sleep()(延迟关闭)

import time

# ...(前面的代码保持不变)

print('解:')
for a in range(35):
    for b in range(35):
        if a + b == 35 and 2 * a + 4 * b == 94:
            print(f'鸡:{a} 只\t兔:{b} 只')

time.sleep(10)  # 暂停10秒后自动关闭

方法3:打包时指定控制台窗口(PyInstaller)

在打包时通过 --console 参数强制显示控制台窗口:

pyinstaller --onefile --console your_script.py

方法4:输出到文件(无需交互)

# ...(前面的代码保持不变)

with open('result.txt', 'w', encoding='utf-8') as f:
    f.write(title + txt + '\n\n解:\n')
    for a in range(35):
        for b in range(35):
            if a + b == 35 and 2 * a + 4 * b == 94:
                f.write(f'鸡:{a} 只\t兔:{b} 只')

print("结果已保存到 result.txt")

推荐方案

  1. 如果是Windows系统:用 os.system('pause') 最简单。
  2. 跨平台需求:用 time.sleep() 或输出到文件。
  3. 打包时:确保 PyInstaller 命令包含 --console 参数。

完整代码示例(使用 os.system('pause')

import os

title = """
编程求解:鸡兔同笼问题
---------------------------------
程序设计:王小二
"""

txt="""
鸡兔同笼
    鸡兔同笼是我国古代著名趣题之一。大约在1500年前,《孙子算经》中就记载了这个有趣的问题。书中是这样叙述的:“今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?
    """

print(title, txt)
print()

print('解:')
for a in range(35):
    for b in range(35):
        if a + b == 35 and 2 * a + 4 * b == 94:
            print(f'鸡:{a} 只\t兔:{b} 只')

os.system('pause')

打包命令(PyInstaller)

pyinstaller --onefile --console your_script.py

这样生成的EXE会保持控制台窗口打开,直到用户按键退出。

posted @ 2025-12-16 09:53  nxhujiee  阅读(2)  评论(0)    收藏  举报