这次我们选择一个稍微深入一点,但非常实用且有趣的主题:用Python制作一个简单的猜数字游戏。

这个项目非常适合初学者,因为它会涵盖以下几个核心概念:
- 变量:存储信息(比如秘密数字、玩家的猜测)。
- 用户输入:获取玩家的操作。
- 条件判断:
if,elif,else,用来判断猜测是否正确、太大或太小。 - 循环:
while,让游戏可以持续进行,直到玩家猜对。 - 类型转换:将玩家输入的文本(字符串)转换成数字(整数)。
- 随机数:让每次游戏的秘密数字都不同。
项目目标:猜数字游戏
游戏规则:
- 电脑会随机想一个1到100之间的整数。
- 玩家需要通过键盘输入自己猜的数字。
- 电脑会给出提示:“猜大了!”、“猜小了!”或者“恭喜你,猜对了!”。
- 游戏会记录玩家猜了多少次,并在猜对后显示出来。
- 玩家可以选择是否再玩一次。
准备工作
确保你的电脑上已经安装了Python,如果没有,可以从Python官网 (python.org) 下载并安装,安装时,请记得勾选 "Add Python to PATH" 选项。
打开你喜欢的代码编辑器(VS Code, PyCharm,或者 even Windows 自带的记事本),新建一个文件,命名为 guess_number.py。
编写代码
我们将分块来写代码,并解释每一部分的作用。
第一部分:导入随机数模块
要生成随机数,我们需要使用Python内置的 random 模块,模块是包含许多有用功能的“工具箱”。
import random
解释:
import是Python的关键字,意思是“导入”。random是Python的一个标准模块,专门用来处理随机数。
第二部分:定义游戏主逻辑
这是游戏的核心部分,我们把它放在一个 while True 循环里,这样玩家就可以“一直玩下去”,直到选择退出。
# --- 游戏主循环 ---
while True:
# 1. 生成秘密数字
secret_number = random.randint(1, 100)
guess_count = 0 # 初始化猜测次数
print("\n欢迎来到猜数字游戏!我已经想好了一个1到100之间的数字。")
# 2. 循环,直到玩家猜对
while True:
# 3. 获取玩家的猜测
try:
# input() 函数获取的是字符串,需要用 int() 转换成整数
guess_str = input("请输入你猜的数字: ")
guess = int(guess_str)
guess_count += 1 # 每次猜测后,次数加1
# 4. �猜的数字大小
if guess < secret_number:
print("猜小了!")
elif guess > secret_number:
print("猜大了!")
else:
print(f"恭喜你,猜对了!你一共猜了 {guess_count} 次。")
break # 猜对了,就跳出内部的 while True 循环
except ValueError:
# 如果玩家输入的不是数字,会触发这个错误
print("输入无效,请输入一个1到100之间的整数!")
# 5. 询问玩家是否再玩一次
play_again = input("想再玩一次吗?(yes/no): ")
if play_again.lower() != 'yes':
print("游戏结束,下次再见!")
break # 玩家不想再玩了,就跳出外部的 while True 循环
完整代码与逐行解析
下面是完整的代码,你可以直接复制粘贴到你的 guess_number.py 文件中。
# guess_number.py
# 导入 random 模块,用于生成随机数
import random
# --- 游戏主循环 ---
# 使用 while True 可以让游戏一直重复,直到玩家主动退出
while True:
# 1. 游戏初始化
# random.randint(a, b) 会生成一个 a 到 b 之间的随机整数(包含a和b)
secret_number = random.randint(1, 100)
guess_count = 0 # 初始化猜测次数为0
print("\n欢迎来到猜数字游戏!我已经想好了一个1到100之间的数字。")
# 2. 猜测循环
# 这个循环会一直运行,直到玩家猜对数字
while True:
# 3. 获取用户输入
try:
# input() 函数会暂停程序,等待用户在键盘上输入并按回车
# input() 返回的是一个字符串类型
guess_str = input("请输入你猜的数字: ")
# 因为我们要做数学比较,所以需要把字符串转换成整数
# int() 函数可以完成这个转换
guess = int(guess_str)
# 每次有效猜测后,猜测次数加1
guess_count += 1
# 4. 判断猜测结果
# 使用 if-elif-else 结构来比较玩家猜测的数字和秘密数字
if guess < secret_number:
# 如果猜的数字比秘密数字小
print("猜小了!")
elif guess > secret_number:
# 如果猜的数字比秘密数字大
print("猜大了!")
else:
# 如果猜的数字和秘密数字相等,猜对了!
# 使用 f-string (f"...") 来格式化字符串,方便地嵌入变量
print(f"恭喜你,猜对了!你一共猜了 {guess_count} 次。")
# 猜对了,就使用 break 语句跳出内部的 "猜测循环"
break
except ValueError:
# 如果用户输入的不是纯数字("abc" 或 "12.3")
# int() 函数会抛出 ValueError 错误
# 我们用 try-except 结构来捕获这个错误,并提示用户
print("输入无效,请输入一个1到100之间的整数!")
# 5. 询问是否再玩一次
# 当玩家猜对后,会执行到这里
play_again = input("想再玩一次吗?(yes/no): ")
# .lower() 方法可以将用户的输入全部转为小写,这样输入 "Yes", "YES", "yes" 都可以
if play_again.lower() != 'yes':
# 如果玩家输入的不是 "yes",就打印告别信息
print("游戏结束,下次再见!")
# 然后使用 break 语句跳出外部的 "游戏主循环",程序结束
break
运行和测试
- 保存你的
guess_number.py文件。 - 打开你的终端或命令提示符。
- 使用
cd命令切换到你保存文件的目录。cd C:\Users\YourName\Desktop。 - 运行程序:在终端中输入
python guess_number.py然后按回车。
你就可以开始玩游戏了!尝试猜几次,看看程序是否按预期工作,试着输入一些非数字,看看程序会不会优雅地处理错误。
拓展与挑战
你已经完成了基础版本,现在可以尝试给它增加一些新功能,让它变得更有趣:
-
限制猜测次数:比如只给玩家7次猜测机会,如果7次都没猜对,游戏就结束,并公布正确答案。
- 提示:在内部的
while循环条件中加入and guess_count < 7。
- 提示:在内部的
-
增加难度选择:让玩家可以选择难度,比如简单(1-50)、中等(1-100)、困难(1-200)。
- 提示:在游戏开始时,用
input()询问玩家难度,然后用if-elif来设置secret_number的范围。
- 提示:在游戏开始时,用
-
增加计分系统:每次猜对,根据猜测次数给予不同的分数(比如猜1次得100分,猜2次得90分...),最后可以显示总分。
- 提示:创建一个
total_score变量,在猜对时根据guess_count计算本次得分并累加。
- 提示:创建一个
-
增加“提示”功能:在玩家猜错几次后,告诉玩家“这个数字是偶数”或“这个数字的十位数是5”。
- 提示:可以设置一个
hint_count变量,当guess_count达到某个值时,给出提示。
- 提示:可以设置一个
这些挑战能帮助你更好地理解和运用这些编程概念,如果卡住了,随时可以再来问我!祝你编码愉快!
