Python猜拳“小”游戏
猜拳小游戏想必大家都玩过,它起源于中国汉代,后传入日本并发展成现代形式。在东亚文化中,猜拳常用于解决争议或娱乐。日本称为“じゃんけん”,韩国称为“가위바위보”,西方称为“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 += 1elif computer_choice == PAPER:print("电脑获胜")computer_score += 1else:print("你获胜")player_score += 1
elif player_choice == PAPER:if computer_choice == ROCK:print("你获胜")player_score += 1elif computer_choice == PAPER:print("平局")tie_count += 1else:print("电脑获胜")computer_score += 1
else:if computer_choice == ROCK:print("电脑获胜")computer_score += 1elif computer_choice == PAPER:print("你获胜")player_score += 1else:print("平局")tie_count += 1# 输出得分情况
print(f"您的得分:{player_score},电脑的得分:{computer_score},平局次数:{tie_count}")
方式1-1:random模块+👆
通过random
模块生成电脑的选择,再与用户输入进行比较,利用条件判断输出结果。
import randomdef rock_paper_scissors():choices = ['石头', '剪刀', '布']computer_choice = random.choice(choices)user_choice = input("请输入你的选择(石头/剪刀/布): ").strip()if user_choice not in choices:print("输入无效,请重新输入!")returnprint(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 randomchoices = ["石头", "剪刀", "布"]
rounds = 3 # 设置游戏轮数for i in range(rounds):print(f"\n第 {i+1} 轮:")player_choice = input("请输入你的选择(石头/剪刀/布): ").strip()if player_choice not in choices:print("输入无效,请重新选择!")continuecomputer_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 randomchoices = ["石头", "剪刀", "布"]
play_again = Truewhile play_again:player_choice = input("\n请输入你的选择(石头/剪刀/布): ").strip()if player_choice not in choices:print("输入无效,请重新选择!")continuecomputer_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 == "是"
悄悄告诉你:
尽管猜拳看似随机,但部分玩家会尝试预测对手行为:
- 新手倾向重复上一轮的手势。
- 输家可能下意识更换手势。
- 统计表明,石头是最常见的初始选择。
- 嘿嘿🤭