猜数字游戏是编程入门的经典练习,它涵盖了基本的程序逻辑、用户交互和条件判断等核心概念。在本文中,我将带您从零开始开发一个猜数字游戏,并使用 PyInstaller 将其打包为可执行文件,方便在没有 Python 环境的电脑上运行。
游戏设计思路
我们的猜数字游戏将包含以下功能:
- 程序随机生成一个 1 到 100 之间的整数
- 玩家有最多 10 次猜测机会
- 每次猜测后,程序会提示猜大了、猜小了或猜对了
- 记录玩家的猜测次数和历史记录
- 游戏结束后可以选择重新开始
猜数字游戏代码
这段代码实现了一个经典的猜数字游戏,让我们逐行解析其功能和实现原理。
导入模块
import random
import os
import random
:导入随机数模块,用于生成游戏中的目标数字import os
:导入操作系统模块,用于实现清空屏幕的功能
清空屏幕函数
def clear_screen():
"""清空屏幕"""
os.system('cls' if os.name == 'nt' else 'clear')
- 定义了一个名为
clear_screen
的函数,用于在不同操作系统下清空屏幕 - 文档字符串
"""清空屏幕"""
说明了函数的功能 os.name == 'nt'
判断是否为 Windows 系统('nt' 代表 Windows)os.system('cls')
:Windows 系统下执行 cls 命令清空屏幕os.system('clear')
:类 Unix 系统(Linux、macOS 等)下执行 clear 命令清空屏幕
游戏主逻辑函数
def play_game():
"""游戏主逻辑"""
# 生成1到100之间的随机数
secret_number = random.randint(1, 100)
max_attempts = 10
attempts = 0
guess_history = []
- 定义
play_game
函数作为游戏的主逻辑 secret_number = random.randint(1, 100)
:生成 1 到 100 之间的随机整数作为目标数字max_attempts = 10
:设置最大猜测次数为 10 次attempts = 0
:初始化已尝试次数为 0guess_history = []
:创建空列表,用于记录玩家的猜测历史
print("欢迎来到猜数字游戏!")
print(f"我已经想好了一个1到100之间的数字,你有{max_attempts}次机会猜出它。")
- 打印游戏欢迎信息
- 使用 f-string 格式化字符串,显示最大猜测次数
while attempts < max_attempts:
# 显示剩余次数
remaining = max_attempts - attempts
print(f"\n还剩{remaining}次机会")
while attempts < max_attempts
:创建循环,只要尝试次数小于最大次数就继续游戏remaining = max_attempts - attempts
:计算剩余猜测次数- 打印剩余次数信息
# 获取用户输入
try:
guess = input("请输入你猜的数字: ")
guess = int(guess)
except ValueError:
print("请输入有效的整数!")
continue
- 使用 try-except 块处理用户输入,防止非数字输入导致程序崩溃
input("请输入你猜的数字: ")
:获取用户输入的字符串guess = int(guess)
:将输入转换为整数- 如果转换失败(用户输入非数字),捕获
ValueError
异常,提示用户输入有效整数,并使用continue
跳过本次循环的剩余部分
# 记录猜测
attempts += 1
guess_history.append(guess)
- 每次有效猜测后,尝试次数加 1
- 将本次猜测的数字添加到历史记录列表中
# 判断猜测结果
if guess < secret_number:
print("猜小了! 再试试更大的数字。")
elif guess > secret_number:
print("猜大了! 再试试更小的数字。")
else:
clear_screen()
print(f"恭喜你! 你猜对了,答案就是{secret_number}!")
print(f"你用了{attempts}次猜出了正确答案。")
print(f"你的猜测历史: {guess_history}")
return
- 比较用户猜测与目标数字:
- 如果猜小了,提示用户尝试更大的数字
- 如果猜大了,提示用户尝试更小的数字
- 如果猜对了:
- 调用
clear_screen()
清空屏幕 - 打印恭喜信息、使用的猜测次数和猜测历史
- 使用
return
退出函数,结束本轮游戏
- 调用
# 如果用完所有机会仍未猜中
clear_screen()
print(f"很遗憾,你已经用完了所有{max_attempts}次机会。")
print(f"正确答案是: {secret_number}")
print(f"你的猜测历史: {guess_history}")
- 当循环结束(用完所有猜测次数)仍未猜中时执行此部分
- 清空屏幕并显示游戏结束信息、正确答案和猜测历史
主函数
def main():
"""主函数,控制游戏流程"""
while True:
play_game()
- 定义
main
函数作为程序入口,控制整个游戏流程 while True
创建无限循环,使玩家可以多次游戏
# 询问是否再玩一次
play_again = input("\n想再玩一次吗? (y/n): ").lower()
if play_again != 'y' and play_again != 'yes':
print("谢谢参与,再见!")
break
clear_screen()
- 每轮游戏结束后,询问玩家是否再玩一次
input(...).lower()
:将用户输入转换为小写,方便判断- 如果用户输入不是 'y' 或 'yes',打印再见信息并使用
break
退出循环 - 如果用户想继续玩,清空屏幕并回到循环开始,重新调用
play_game()
程序入口
if __name__ == "__main__":
main()
- 这是 Python 的标准程序入口写法
- 当直接运行该脚本时,
__name__
变量的值为"__main__"
,此时会调用main()
函数启动游戏 - 如果该脚本被作为模块导入,则不会自动执行游戏
总代码:
import random
import os
def clear_screen():
"""清空屏幕"""
os.system('cls' if os.name == 'nt' else 'clear')
def play_game():
"""游戏主逻辑"""
# 生成1到100之间的随机数
secret_number = random.randint(1, 100)
max_attempts = 10
attempts = 0
guess_history = []
print("欢迎来到猜数字游戏!")
print(f"我已经想好了一个1到100之间的数字,你有{max_attempts}次机会猜出它。")
while attempts < max_attempts:
# 显示剩余次数
remaining = max_attempts - attempts
print(f"\n还剩{remaining}次机会")
# 获取用户输入
try:
guess = input("请输入你猜的数字: ")
guess = int(guess)
except ValueError:
print("请输入有效的整数!")
continue
# 记录猜测
attempts += 1
guess_history.append(guess)
# 判断猜测结果
if guess < secret_number:
print("猜小了! 再试试更大的数字。")
elif guess > secret_number:
print("猜大了! 再试试更小的数字。")
else:
clear_screen()
print(f"恭喜你! 你猜对了,答案就是{secret_number}!")
print(f"你用了{attempts}次猜出了正确答案。")
print(f"你的猜测历史: {guess_history}")
return
# 如果用完所有机会仍未猜中
clear_screen()
print(f"很遗憾,你已经用完了所有{max_attempts}次机会。")
print(f"正确答案是: {secret_number}")
print(f"你的猜测历史: {guess_history}")
def main():
"""主函数,控制游戏流程"""
while True:
play_game()
# 询问是否再玩一次
play_again = input("\n想再玩一次吗? (y/n): ").lower()
if play_again != 'y' and play_again != 'yes':
print("谢谢参与,再见!")
break
clear_screen()
if __name__ == "__main__":
main()
这个游戏逻辑清晰,交互友好,适合作为编程入门练习。
打包该程序
1.环境配置:
Pyinstaller库:
PyInstaller 是一个流行的 Python 应用打包工具,它可以将 Python 脚本及其依赖项打包成独立的可执行文件(.exe、.app 等),使应用能够在没有安装 Python 解释器的环境中运行。这对于 Python 应用的分发和部署非常有用。
安装Pyinstaller:
pip install Pyinstaller
Pyinstaller库的使用:
使用方法在命令提示符窗口或终端中执行命令,以实现相应功能。使用形式如下:
Pyinstaller 代码文件路径+代码文件名
如果打包命令产生大量临时文件,可以在Pyinstaller命令后加入一个参数-F,使打包后只产生一个dist文件:
Pyinstaller -F 代码文件路径+代码文件名
如果需要在命令窗口添加图标,可以使用以下命令:
Pyinstaller -i 图标文件地址+文件名称 -F 代码文件路径+代码文件名
实例演示:
打开命令提示符窗口(windows+r,cmd)
输入代码:
运行中:
保存地址
成功打包:
快去试试吧!大家。