Python编程入门实战:手把手教你打造“石头剪刀布”小游戏(附完整代码)349
今天,我们要进行一次激动人心的编程冒险——用Python语言,亲手打造一个充满趣味和挑战的“石头剪刀布”小游戏!别小看这个经典游戏,它麻雀虽小五脏俱全,将带你领略Python在用户输入、随机数生成、条件判断、循环控制等核心编程概念上的强大魅力。无论你是编程新手,还是希望巩固基础的进阶玩家,这篇手把手教程都将让你收获满满。
---
你好,各位编程爱好者!是不是曾梦想过自己也能创造出好玩的小游戏?今天,就让我们用Python语言,一起实现这个梦想!我们将从零开始,一步步构建一个经典的“石头剪刀布”游戏。通过这个项目,你不仅能体验到编程的乐趣,还能扎实掌握Python的几项核心技能。准备好了吗?让我们开始吧!
第一步:搭建游戏骨架——确定玩家和电脑的出拳
一个游戏首先得有“玩家”和““对手”。在“石头剪刀布”中,我们有玩家和电脑。玩家的出拳需要我们通过键盘输入,而电脑的出拳则需要“随机”生成。这是游戏的两大核心元素。
1.1 玩家出拳:使用 `input()` 函数获取用户输入
Python中的 `input()` 函数非常方便,它可以暂停程序运行,等待用户输入一些文本,然后将这些文本作为字符串返回。我们用它来获取玩家选择的“石头”、“剪刀”或“布”。# 获取玩家输入
player_choice = input("请出拳(石头/剪刀/布):")
print(f"你出的是:{player_choice}")
在上面的代码中,`input()` 会显示括号里的提示信息,然后等待你输入。输入完成后,你的选择会存储在 `player_choice` 变量中。`f-string` (格式化字符串字面量) `f"你出的是:{player_choice}"` 是一种简洁的字符串格式化方式,可以直接将变量值嵌入到字符串中。
1.2 电脑出拳:使用 `random` 模块生成随机选择
电脑的出拳必须是随机的,这样才有游戏的公平性。Python内置的 `random` 模块就能帮助我们实现这一功能。
首先,我们需要导入 `random` 模块:`import random`。
接着,定义一个包含所有可能出拳的列表,然后使用 `()` 函数从这个列表中随机选择一个元素。import random # 导入random模块
# 定义所有可能的出拳
choices = ["石头", "剪刀", "布"]
# 电脑随机选择一个
computer_choice = (choices)
print(f"电脑出的是:{computer_choice}")
通过 `(choices)`,电脑就能在“石头”、“剪刀”、“布”之间随机选择一个,并将其赋值给 `computer_choice` 变量。
第二步:判断胜负——条件语句 `if-elif-else` 的妙用
有了玩家和电脑的出拳,接下来就是游戏的灵魂——判断谁输谁赢。这需要我们用到Python的条件判断语句:`if`、`elif`(else if的缩写)和 `else`。
我们知道,“石头”胜“剪刀”,“剪刀”胜“布”,“布”胜“石头”。如果双方出拳相同,则是平局。我们可以将这些规则转化成代码逻辑。# 假设 player_choice 和 computer_choice 已经确定
if player_choice == computer_choice:
print("平局!")
elif (player_choice == "石头" and computer_choice == "剪刀") or \
(player_choice == "剪刀" and computer_choice == "布") or \
(player_choice == "布" and computer_choice == "石头"):
print("恭喜你,你赢了!")
else:
print("很遗憾,你输了!")
这里有几个关键点:
`==` 用于判断两个值是否相等。
`and` 和 `or` 是逻辑运算符。`and` 表示两个条件都为真时结果才为真;`or` 表示只要有一个条件为真结果就为真。
`\` 反斜杠用于将一行代码逻辑分成多行,提高代码可读性。
`else` 语句捕获了所有不符合 `if` 和 `elif` 条件的情况,即玩家输的情况。
第三步:循环游戏——让比赛可以多次进行
一个游戏玩一局就结束了,是不是有点不过瘾?我们可以用 `while` 循环让游戏持续进行,直到玩家选择退出。同时,我们还可以加入比分统计功能,让游戏更有竞技性。
3.1 使用 `while` 循环
`while True:` 会创建一个无限循环,程序会一直执行循环体内的代码,直到遇到 `break` 语句跳出循环。
3.2 增加比分统计
用两个变量 `player_score` 和 `computer_score` 分别记录玩家和电脑的得分,每次判断胜负后更新得分。# 初始化比分
player_score = 0
computer_score = 0
print("欢迎来到石头剪刀布游戏!")
while True: # 无限循环,直到玩家选择退出
player_choice = input("请出拳(石头/剪刀/布),输入 '退出' 结束游戏:")
if player_choice == "退出":
print("游戏结束!")
break # 跳出循环
# 简单输入校验:确保玩家输入的是有效选项
if player_choice not in ["石头", "剪刀", "布"]:
print("无效输入,请重新输入 '石头'、'剪刀' 或 '布'。")
continue # 跳过当前循环的剩余部分,进入下一次循环
# 电脑随机选择
computer_choice = (choices)
print(f"你出的是:{player_choice}")
print(f"电脑出的是:{computer_choice}")
# 判断胜负并更新比分
if player_choice == computer_choice:
print("平局!")
elif (player_choice == "石头" and computer_choice == "剪刀") or \
(player_choice == "剪刀" and computer_choice == "布") or \
(player_choice == "布" and computer_choice == "石头"):
print("恭喜你,你赢了这一局!")
player_score += 1 # 玩家得分加1
else:
print("很遗憾,你输了这一局!")
computer_score += 1 # 电脑得分加1
# 打印当前比分
print(f"当前比分:你 {player_score} : 电脑 {computer_score}")
print("-" * 30) # 分隔线,让输出更清晰
第四步:完整代码与运行
现在,我们把所有的代码块整合起来,就得到了一个完整的“石头剪刀布”游戏程序。你可以将下面的代码复制到一个 `.py` 文件中(比如 ``),然后用 Python 解释器运行它:`python `。import random # 导入 random 模块,用于生成随机选择
def play_rock_paper_scissors():
"""
运行石头剪刀布游戏的主函数。
"""
player_score = 0 # 初始化玩家得分
computer_score = 0 # 初始化电脑得分
choices = ["石头", "剪刀", "布"] # 定义所有可能的出拳选项
print("=" * 30)
print("欢迎来到石头剪刀布游戏!")
print("=" * 30)
while True: # 游戏主循环,持续进行直到玩家选择退出
# 获取玩家输入,并提示退出选项
player_input = input("请出拳(石头/剪刀/布),输入 '退出' 结束游戏:").strip()
if player_input == "退出":
print("游戏结束!感谢您的参与!")
break # 跳出游戏主循环
# 验证玩家输入是否有效
if player_input not in choices:
print("无效输入!请确保输入 '石头'、'剪刀' 或 '布'。")
continue # 跳过当前循环的剩余部分,进入下一次循环
# 电脑随机选择
computer_choice = (choices)
print(f"你出的是:{player_input}")
print(f"电脑出的是:{computer_choice}")
# 判断胜负逻辑
if player_input == computer_choice:
print("本局平局!")
elif (player_input == "石头" and computer_choice == "剪刀") or \
(player_input == "剪刀" and computer_choice == "布") or \
(player_input == "布" and computer_choice == "石头"):
print("恭喜你,你赢了这一局!")
player_score += 1 # 玩家得分加一
else:
print("很遗憾,你输了这一局!")
computer_score += 1 # 电脑得分加一
# 打印当前比分
print(f"当前比分:你 {player_score} : 电脑 {computer_score}")
print("-" * 30) # 打印分隔线,增强可读性
# 游戏结束后,显示最终比分
print(f"最终比分:你 {player_score} : 电脑 {computer_score}")
if player_score > computer_score:
print("恭喜,你赢得了最终胜利!")
elif computer_score > player_score:
print("电脑取得了最终胜利,再接再厉!")
else:
print("最终平局,势均力敌!")
# 调用主函数开始游戏
if __name__ == "__main__":
play_rock_paper_scissors()
第五步:知识点总结与拓展思考
通过这个小项目,我们掌握了Python编程中的几个核心概念:
`import` 语句:用于导入外部模块(如 `random`)。
变量:存储数据(如 `player_score`, `computer_choice`)。
列表(`list`):存储有序的元素集合(如 `choices`)。
`input()` 函数:获取用户输入。
`print()` 函数:向控制台输出信息。
`f-string`:便捷的字符串格式化方式。
`if-elif-else` 条件语句:根据条件执行不同的代码块。
`while` 循环:重复执行代码块,直到满足退出条件。
`break` 语句:跳出循环。
`continue` 语句:跳过当前循环的剩余部分,进入下一次循环。
函数(`def`):将一段代码组织成可重用的块,提高代码结构性和可维护性。
`if __name__ == "__main__":`:确保 `play_rock_paper_scissors()` 函数只在脚本作为主程序运行时被调用。
你还可以尝试以下拓展,让你的游戏更完善:
更强大的输入校验: 除了判断是否是“石头/剪刀/布”,还可以处理大小写不一致的问题(例如,将用户输入统一转换为小写或大写再比较)。
图形界面: 使用 `Tkinter`、`PyQt` 或 `Pygame` 等库为游戏添加图形用户界面(GUI),让它看起来更像一个真正的游戏。
多轮制胜: 设置“三局两胜”或“五局三胜”等规则,而不是单纯的比分累计。
游戏历史记录: 记录每一轮的出拳结果,并在游戏结束时显示。
编程的乐趣就在于不断地探索和创造!希望这次“石头剪刀布”的编程之旅能让你对Python产生浓厚的兴趣。记住,从简单的小项目开始,一步一个脚印,你就能逐渐掌握强大的编程技能。祝你在编程的道路上越走越远,下次再见!
2025-10-22

Perl命令行文本处理神器:-n -e组合详解与实战指南
https://jb123.cn/perl/70404.html

Perl时间处理全攻略:从基础函数到DateTime模块的深度解析
https://jb123.cn/perl/70403.html

告别臃肿!Python轻量级编程利器:从入门到高效开发必选
https://jb123.cn/python/70402.html

JavaScript:从前端到全栈,解锁编程世界的万能钥匙
https://jb123.cn/javascript/70401.html

【前端宝典】精选JavaScript电子书推荐:从入门到高阶,你的学习路径全解析!
https://jb123.cn/javascript/70400.html
热门文章

Python 编程解密:从谜团到清晰
https://jb123.cn/python/24279.html

Python编程深圳:初学者入门指南
https://jb123.cn/python/24225.html

Python 编程终端:让开发者畅所欲为的指令中心
https://jb123.cn/python/22225.html

Python 编程专业指南:踏上编程之路的全面指南
https://jb123.cn/python/20671.html

Python 面向对象编程学习宝典,PDF 免费下载
https://jb123.cn/python/3929.html