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")
推荐方案
- 如果是Windows系统:用
os.system('pause')最简单。 - 跨平台需求:用
time.sleep()或输出到文件。 - 打包时:确保 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会保持控制台窗口打开,直到用户按键退出。

浙公网安备 33010602011771号