大家好! 本文将一步步解析一个简单但完整的Python项目——三局两胜制的“石头剪刀布”游戏。通过这个项目,初学者可以巩固Python基础语法,理解程序逻辑结构。
代码呈现:
import random
all_choices = ['石头', '剪刀', '布']
win_list = [['石头', '剪刀'], ['剪刀', '布'], ['布', '石头']]
prompt = """(0) 石头
(1) 剪刀
(2) 布
请选择(0/1/2): """
cwin = 0
pwin = 0
while cwin < 2 and pwin < 2:
computer = random.choice(all_choices)
ind = int(input(prompt))
player = all_choices[ind]
print("Your choice: %s, Computer's choice: %s" % (player, computer))
if player == computer:
print('\033[32;1m平局\033[0m')
elif [player, computer] in win_list:
pwin += 1
print('\033[31;1mYou WIN!!!\033[0m')
else:
cwin += 1
print('\033[31;1mYou LOSE!!!\033[0m')
代码解析:
初始化设置
all_choices = ['石头', '剪刀', '布'] win_list = [['石头', '剪刀'], ['剪刀', '布'], ['布', '石头']]
all_choices
:定义玩家可选的三种手势win_list
:存储玩家获胜的组合条件(玩家手势, 电脑手势)
游戏主循环
while cwin < 2 and pwin < 2:
循环持续直到某一方获胜局数达到2局
cwin
记录电脑胜利次数,pwin
记录玩家胜利次数
随机生成电脑选择
computer = random.choice(all_choices)
random.choice()
从列表中随机选取一个元素实现电脑的“出拳”行为
玩家输入处理
ind = int(input(prompt)) player = all_choices[ind]
通过数字0/1/2接收玩家选择
将数字索引转换为对应的手势字符串
胜负判断逻辑
if player == computer: # 平局 elif [player, computer] in win_list: # 玩家赢 else: # 电脑赢
平局:双方手势相同
玩家赢:当前组合存在于
win_list
中电脑赢:以上条件均不满足
胜局计数与颜色提示
print('\033[31;1mYou WIN!!!\033[0m') # 红色高亮
\033[31;1m
控制台输出红色高亮文字\033[0m
重置文本样式
关键知识点总结:
随机数生成
random.choice()
实现电脑的随机出拳,是游戏的核心随机源。列表与嵌套列表
使用列表存储游戏选项,嵌套列表定义获胜规则。
循环控制
while
循环确保游戏持续进行直到达成胜利条件。条件分支
多层
if-elif-else
结构处理不同胜负场景。用户输入处理
将数字输入映射到手势选项,提升用户体验。
总结:
欢迎在评论区分享你的练习代码或疑问~