猜拳小游戏想必大家都玩过,它起源于中国汉代,后传入日本并发展成现代形式。在东亚文化中,猜拳常用于解决争议或娱乐。日本称为“じゃんけん”,韩国称为“가위바위보”,西方称为“Rock-Paper-Scissors”。
今天我想介绍几种Python实现猜拳小游戏的方法: if-else , random 模块,for循环,while循环
.
方式一:使用 if-else 条件语句
电脑的出拳方式的生成通过计算得到,而算法只能模拟出随机数的一部分特点,因此可能存在一定的问题。
注意,这个程序中只会执行一次猜拳游戏→
# 定义常量
ROCK = 1
PAPER = 2
SCISSORS = 3
# 输出欢迎信息
print("欢迎来到猜拳游戏!")
print("游戏规则:")
print("1. 石头胜剪刀")
print("2. 剪刀胜布")
print("3. 布胜石头")
# 定义得分变量
player_score = 0
computer_score = 0
tie_count = 0
# 让玩家输入出拳方式
player_choice = int(input("请输入您的出拳方式(1:石头,2:剪刀,3:布):"))
# 判断玩家的选择
if player_choice == ROCK:
print("你出了石头")
elif player_choice == PAPER:
print("你出了剪刀")
else:
print("你出了布")
# 生成电脑的出拳方式(运用算法)
computer_choice = ((player_score + computer_score + tie_count) % 3) + 1
# 输出电脑的选择
if computer_choice == ROCK:
print("电脑出了石头")
elif computer_choice == PAPER:
print("电脑出了剪刀")
else:
print("电脑出了布")
# 判断输赢并输出结果
if player_choice == ROCK:
if computer_choice == ROCK:
print("平局")
tie_count += 1
elif computer_choice == PAPER:
print("电脑获胜")
computer_score += 1
else:
print("你获胜")
player_score += 1
elif player_choice == PAPER:
if computer_choice == ROCK:
print("你获胜")
player_score += 1
elif computer_choice == PAPER:
print("平局")
tie_count += 1
else:
print("电脑获胜")
computer_score += 1
else:
if computer_choice == ROCK:
print("电脑获胜")
computer_score += 1
elif computer_choice == PAPER:
print("你获胜")
player_score += 1
else:
print("平局")
tie_count += 1
# 输出得分情况
print(f"您的得分:{player_score},电脑的得分:{computer_score},平局次数:{tie_count}")
方式1-1:random模块+👆
通过random
模块生成电脑的选择,再与用户输入进行比较,利用条件判断输出结果。
import random
def rock_paper_scissors():
choices = ['石头', '剪刀', '布']
computer_choice = random.choice(choices)
user_choice = input("请输入你的选择(石头/剪刀/布): ").strip()
if user_choice not in choices:
print("输入无效,请重新输入!")
return
print(f"电脑选择了: {computer_choice}")
if user_choice == computer_choice:
print("平局!")
elif (user_choice == '石头' and computer_choice == '剪刀') or \
(user_choice == '剪刀' and computer_choice == '布') or \
(user_choice == '布' and computer_choice == '石头'):
print("你赢了!")
else:
print("你输了!")
rock_paper_scissors()
方式二:使用for循坏
使用random模块生成电脑的选择 + for循环(有固定轮数)
此代码我命令它执行3次👇
也可自行添加 input,输入
import random
choices = ["石头", "剪刀", "布"]
rounds = 3 # 设置游戏轮数
for i in range(rounds):
print(f"\n第 {i+1} 轮:")
player_choice = input("请输入你的选择(石头/剪刀/布): ").strip()
if player_choice not in choices:
print("输入无效,请重新选择!")
continue
computer_choice = random.choice(choices)
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("你赢了!")
else:
print("你输了!")
方式三:使用while循环
可以选择是否继续游戏,玩无数次!
更加灵活 nice~~~
import random
choices = ["石头", "剪刀", "布"]
play_again = True
while play_again:
player_choice = input("\n请输入你的选择(石头/剪刀/布): ").strip()
if player_choice not in choices:
print("输入无效,请重新选择!")
continue
computer_choice = random.choice(choices)
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("你赢了!")
else:
print("你输了!")
# 询问是否继续游戏
response = input("是否继续游戏?(是/否): ").strip().lower()
play_again = response == "是"
悄悄告诉你:
尽管猜拳看似随机,但部分玩家会尝试预测对手行为:
- 新手倾向重复上一轮的手势。
- 输家可能下意识更换手势。
- 统计表明,石头是最常见的初始选择。
- 嘿嘿🤭