Python实现猜拳小游戏的多种方式

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

简介

猜拳小游戏是一个经典的小游戏项目,也是初学者学习编程的必要练手题目之一。在 Python 中,我们可以使用多种方式来实现一个简单的猜拳小游戏。

本文将依次介绍六种Python实现猜拳小游戏的方法,包括:使用 if-else 条件语句、使用 random 模块、使用字典映射胜负关系、for循环、while循环、函数。知识点依次堆加,这些方式各有优缺点,但无论哪种方式,都能够帮助初学者熟悉 Python 的编码语法和逻辑思维,更好地理解 Python 的基本数据类型、控制语句等内容;对于专业人士,可以根据具体需求进行选择。

实现方式一:使用 if-else 条件语句

不能使用while循环和for循环还有随机数模块,因此电脑的出拳方式的生成只能通过计算得到,而该算法只能模拟随机数的一部分特性,因此在实际应用中可能存在一定的问题。

注意,这个程序中没有使用while循环或for循环等任何循环语句,因此只会执行一次猜拳游戏。

# 定义常量
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}")


实现方式二:使用 random 模块

在使用if语句的基础上通过引入 Python 的 random 模块,实现电脑随机产生手势的功能。

注意,这个程序中没有使用while循环或for循环等任何循环语句,因此只会执行一次猜拳游戏。

import random  # 引入 random 模块,用于产生随机数

print("欢迎来到猜拳游戏!")
print("请出拳:1-石头,2-剪刀,3-布")

# 获取用户输入,将输入转换成整型数字
user_input = int(input())

# 电脑随机出拳,使用 random.choice 随机从列表中选择一个元素
computer_choice = random.choice(["石头", "剪刀", "布"])

# 判断胜负
if (user_input == 1 and computer_choice == "剪刀") or \
    (user_input == 2 and computer_choice == "布") or \
    (user_input == 3 and computer_choice == "石头"):
    print("你赢了!电脑出了", computer_choice)
elif (user_input == 1 and computer_choice == "布") or \
    (user_input == 2 and computer_choice == "石头") or \
    (user_input == 3 and computer_choice == "剪刀"):
    print("你输了!电脑出了", computer_choice)
else:
    print("平局!电脑出了", computer_choice)


实现方式三:使用字典映射胜负关系

使用if语句与随机数模块和一个字典来映射石头剪刀布的胜负规则,并根据用户和计算机输入的选项对应的键值找到其胜出的选项

# 使用字典映射实现猜拳小游戏

import random  # 引入 random 模块,用于产生随机数

# 定义字典,映射石头、剪刀、布分别击败什么
rule_dict = {'石头': '剪刀', '剪刀': '布', '布': '石头'}

# 用户出拳
print('猜拳开始,请出拳(石头、剪刀、布):')
user_choice = input()

# 电脑出拳,从列表['石头', '剪刀', '布']中随机选择一个元素
computer_choice = random.choice(['石头', '剪刀', '布'])
print('你出了 %s ,电脑出了 %s' % (user_choice, computer_choice))

# 判断胜负,根据字典中定义的胜负关系进行判断
if rule_dict[user_choice] == computer_choice:
    print('你赢了!')
elif rule_dict[computer_choice] == user_choice:
    print('你输了!')
else:
    print('平局。')


实现方式四:for循环

这种实现方式使用if语句、随机数模块和一个字典来映射石头剪刀布的胜负规则,并使用for循环来实现猜拳小游戏

# 导入随机数模块
import random

# 定义字典,用于存储石头、剪刀、布之间的胜负关系
choices = {"石头": "剪刀", "剪刀": "布", "布": "石头"}

# 设置需要赢得的局数
rounds_to_win = 2

# 初始化玩家、计算机的分数
player_score = 0
computer_score = 0

# 进入一个循环,在每一轮游戏中:
for round in range(1, 4):
    print(f"第{round}局:")  # 输出当前轮次
    computer_choice = random.choice(list(choices.keys()))  # 计算机随机选择
    player_choice = input("请出拳(石头/剪刀/布):")  # 玩家输入选择
    print(f"你出了{player_choice},电脑出了{computer_choice}。")  # 输出选择

    if player_choice == computer_choice:  # 判断平局情况
        print("平局!")
    elif choices[player_choice] == computer_choice:  # 判断玩家获胜情况
        print("你赢了!")
        player_score += 1  # 更新玩家得分
    else:  # 否则为计算机获胜情况
        print("电脑赢了!")
        computer_score += 1  # 更新计算机得分

    print(f"当前比分:玩家 {player_score} - 电脑 {computer_score}")

    if player_score == rounds_to_win:  # 判断玩家达到赢得的局数
        print("你赢得了比赛!")
        break  # 结束游戏循环
    elif computer_score == rounds_to_win:  # 判断计算机达到赢得的局数
        print("电脑赢得了比赛!")
        break  # 结束游戏循环


实现方式五:while循环

在原有基础上进行修改,将for循环替换为while循环;

  1. 增加了用户交互环节,让用户可以选择自己出拳或者输入r随机出拳的功能;
  2. 记录了游戏结果统计变量(比如用户胜利场数、电脑胜利场数和回合数),并在游戏结束时打印比分结果;
  3. 在满足三局两胜的条件时结束游戏,并询问用户是否再次开启游戏;
import random

# 定义一个字典,用于映射石头剪刀布的胜负规则
rps_dict = {'石头': '剪刀', '剪刀': '布', '布': '石头'}

# 初始化用户选择和电脑选择
user_choice = None
computer_choice = None

# 初始化游戏结果统计变量
user_win_count = 0
computer_win_count = 0
round_count = 0

# 使用while循环实现猜拳小游戏
while True:
    # 打印提示信息
    print("欢迎来到猜拳游戏!")
    print("请输入石头、剪刀或布(输入r表示随机选择):")

    # 获取用户输入
    user_input = input().strip().lower()

    # 如果用户输入为r,则随机选择石头、剪刀或布
    if user_input == 'r':
        computer_choice = random.choice(list(rps_dict.values()))

    # 如果用户输入为有效的选项,则将其转换为对应的值并赋值给user_choice和computer_choice
    elif user_input in list(rps_dict.keys()):
        user_choice = user_input
        computer_choice = rps_dict[user_input]

    # 如果用户输入无效,则提示错误信息并继续循环
    else:
        print("输入无效,请重新输入!")
        continue

    # 判断胜负并输出结果
    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("恭喜你,你赢了!")
        user_win_count += 1
    else:
        print("很遗憾,你输了。")
        computer_win_count += 1

    # 打印本局游戏的结果
    print(f"你出了{user_choice},电脑出了{computer_choice}")
    print(f"当前比分:你 {user_win_count} - {computer_win_count} 电脑\n")

    # 增加回合数并判断是否达到三局两胜的条件
    round_count += 1
    if user_win_count == 2:
        print("你已经获得三局两胜了,你赢了!")
        break
    elif computer_win_count == 2:
        print("很遗憾,电脑获得了三局两胜,你输了!")
        break

    # 根据用户的选择决定是否继续游戏
    replay = input("是否再玩一局?(y/n)").strip().lower()
    if replay != 'y':
        break

# 询问用户是否再次开启游戏
play_again = input("是否再次开启游戏?(y/n)").strip().lower()
if play_again == 'y':
    exec(open(__file__).read())
else:
    print("游戏结束!")


实现方式六:函数

对while循环的代码进行重构使用函数进行优化

import random
from time import sleep

# 定义一个字典,用于映射石头剪刀布的胜负规则
rps_dict = {'石头': {'name': '石头', 'defeat': '布'},
            '剪刀': {'name': '剪刀', 'defeat': '石头'},
            '布': {'name': '布', 'defeat': '剪刀'}}

# 清屏函数,用于在每次输出前清空屏幕
def clear_screen():
    print('\033c', end='')

# 美化输出函数,用于打印美观的输出界面
def print_beautiful(message):
    print('='*50)
    print(f"{message:^50}")
    print('='*50)

# 获取用户输入函数,用于获取用户选择
def get_user_choice():
    while True:
        user_input = input("请选择 石头、剪刀、布:")
        if user_input not in rps_dict:
            print_beautiful("选择无效,请重新选择")
        else:
            break
    return rps_dict[user_input]

# 电脑随机选择函数
def get_computer_choice():
    return random.choice(list(rps_dict.values()))

# 判断胜负函数
def judge(user_choice, computer_choice):
    if user_choice == computer_choice:
        result = "平局!"
        winner = None
    elif user_choice['defeat'] == computer_choice['name']:
        result = "很遗憾,你输了。"
        winner = 'computer'
    else:
        result = "恭喜你,你赢了!"
        winner = 'user'
    return result, winner

# 打印结果函数
def print_result(result, user_choice, computer_choice):
    print_beautiful(result)
    sleep(1)
    print(f"你出了【{user_choice['name']}】,电脑出了【{computer_choice['name']}】")

# 根据胜负结果更新胜利次数函数
def update_win_count(winner, win_count):
    if winner == 'user':
        win_count['user'] += 1
    elif winner == 'computer':
        win_count['computer'] += 1

# 打印当前比分函数
def print_score(win_count):
    print(f"当前比分:你 {win_count['user']} - {win_count['computer']} 电脑\n")

# 判断是否达成胜利条件函数
def check_victory(win_count):
    if win_count['user'] == 2:
        print_beautiful("恭喜你,你已经获得三局两胜了,你赢了!")
        return True
    elif win_count['computer'] == 2:
        print_beautiful("很遗憾,电脑获得了三局两胜,你输了!")
        return True
    else:
        return False

# 再玩一局函数
def ask_replay():
    while True:
        replay = input("是否再玩一局?(y/n)").strip().lower()
        if replay not in ['y', 'n']:
            print_beautiful("输入无效,请重新输入")
        else:
            break
    return replay == 'y'

# 游戏结束函数
def game_over():
    print_beautiful("游戏结束!")
    sleep(2)

# 主函数,实现游戏逻辑
def main():
    clear_screen()
    print_beautiful("欢迎来到猜拳游戏!")
    win_count = {'user': 0, 'computer': 0}

    while True:
        user_choice = get_user_choice()
        computer_choice = get_computer_choice()

        result, winner = judge(user_choice, computer_choice)
        print_result(result, user_choice, computer_choice)
        update_win_count(winner, win_count)
        print_score(win_count)

        if check_victory(win_count):
            if not ask_replay():
                break
            else:
                win_count = {'user': 0, 'computer': 0}
                clear_screen()
            
    game_over()

if __name__ == '__main__':
    main()


好了,今天的分享就到这里!如果你对Python感兴趣,想要学习pyhton,这里给大家分享一份Python全套学习资料,里面的内容都是适合零基础小白的笔记和资料,超多实战案例,不懂编程也能听懂、看懂。

如果你也喜欢编程,想通过学习Python获取更高薪资,这里给大家分享一份Python学习资料。

😝朋友们如果有需要的话,可以V扫描下方二维码免费领取🆓

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python学习路线

image-20230619144606466

python学习路线图1

二、Python基础学习
1. 开发工具

2. 学习笔记

在这里插入图片描述

3. 学习视频

在这里插入图片描述

三、Python小白必备手册

图片

四、数据分析全套资源

在这里插入图片描述

五、Python面试集锦
1. 面试资料

在这里插入图片描述

在这里插入图片描述

2. 简历模板

在这里插入图片描述

因篇幅有限,仅展示部分资料,添加上方即可获取

适合新手练手的三个python简单小游戏 Python之前我们先来几个简单小游戏练练手,这三个小游戏一个比一个复杂,建议新手慢慢来:1.猜拳: import random #导入随机模块 num = 1 yin_num = 0 shu_num = 0 while num <= 3: if shu_num == 2 or yin_num == 2: break user = int(input('请出拳 0(石头) 1(剪刀) 2(布)')) if user > 2: p 阅读详情

相关推荐

关于运用Python语言编写猜拳小游戏

编写猜拳小游戏之前,我们先来了解一个新算法:for循环# for(int index = 0 ; index &lt; 10 ;index ++) # { # 循环;迭代 # }

朝花夕拾 7290

python猜拳游戏

python开发猜拳游戏的逻辑代码简单实用有效,python新学者需要的下载看看

Python代码实现猜拳小游戏

import random #1代表true while 1: #生成随机数 s = int(random.randint(1, 3)) #赋值给生成的随机数 if s == 1: ind = "剪刀" if s == 2: ind = "石头" if s == 3: ind = "布" m

zhangtongyuan0909的博客 1万+

Python实现猜拳游戏(完整源码)

在这段代码中,我们首先要求用户输入他们的名字,然后欢迎他们进入游戏。接着,在一个无限循环中,我们让计算机随机选择石头、剪刀或布,并要求用户输入他们的选择。然后我们将用户的选择与计算机的选择进行比较,如果结果是平局,我们会打印出“平局!反之,如果计算机赢了,我们会打印出“很遗憾,您输了。如果用户输入了“y”,那么游戏将重新开始。Python是一门十分流行的编程语言,对于初学者来说,写一个小游戏是很不错的练手方式。总的来说,Python是一个非常强大和灵活的编程语言,可以用来实现各种各样的应用程序和游戏

m0_47037246的博客 3901

Python实现猜拳游戏

0 引言在日常休闲时间中,我们经常玩着许多游戏来寻找生活中的乐趣,猜拳游戏是童年记忆中的游戏,也是我们从小学会的第一个游戏。1 问题编写代码来完成人工机器猜拳系统2 方法首先引入随机数系统...

算法与编程之美 1万+

Python猜拳小游戏代码

Python猜拳小游戏代码

星卯教育-信奥教练tony 1715

python编程猜拳小游戏_python代码实现猜拳小游戏

本文实例为大家分享了python代码实现猜拳小游戏的具体代码,供大家参考,具体内容如下游戏实现具体功能原有的用户登录的信息均能保存在txt文件里,注册的信息也能保存在txt里面格式如下:便于之后转换成列表字典形式添加注册数据用户的猜拳记录也能保存在txt中并以如下格式显示格式如下:具体Python代码:#-*- coding=utf8 -*-# @author:sololi# date: 2020...

weixin_35725559的博客 1506

Python实战案例:打造趣味猜拳小游戏

本文介绍了如何使用Python实现一个经典的猜拳小游戏(石头剪刀布)。通过该案例,编程学习者可以深入理解条件判断、循环控制、数据结构等核心概念,并锻炼逻辑思维与代码调试能力。文章从游戏规则出发,详细讲解了代码实现过程,包括游戏初始化、用户输入验证、胜负判定、战绩统计等关键步骤。

an_yu_xin的博客 1580

python小游戏代码大全-python简单小游戏代码 怎么用Python制作简单小游戏

1、Python猜拳小游戏代码:2、import random #导入随机模块3、4、num = 15、yin_num = 06、shu_num = 07、while num 2:12、 print('不能出大于2的值')13、 else:14、 data = ['石头', '剪刀', '布']15、 com = random.randint(0, 2)16、 print(您出的是{},电脑出的...

weixin_37988176的博客 4万+

Python面向对象——人机猜拳小游戏

面向对象之人机猜拳小游戏 实现步骤如下: 1.1设计玩家类,电脑类,游戏game类 1.2玩家类player定义一个属性name和方法,出拳,1:石头 2:剪刀 3:布 1.3电脑类基本和玩家类基本一样,但是电脑出拳是随机产生1 2 3 1.4游戏类中包含玩家类和电脑类,定义一个游戏开始方法,调用玩家和电脑类出拳方法,判断游戏结果,谁赢了,把结果保存在一个电脑文件中 1.5玩家可以玩N次游戏,当...

qq_42244911的博客 8806

python编程猜拳游戏_python代码实现猜拳小游戏

本文实例为大家分享了python代码实现猜拳小游戏的具体代码,供大家参考,具体内容如下游戏实现具体功能原有的用户登录的信息均能保存在txt文件里,注册的信息也能保存在txt里面格式如下:便于之后转换成列表字典形式添加注册数据用户的猜拳记录也能保存在txt中并以如下格式显示格式如下:具体Python代码:#-*- coding=utf8 -*-# @author:sololi# date: 2020...

weixin_39743064的博客 2088

python编程猜拳小游戏_python实现人机猜拳小游戏

今天的这篇文章呢是对人机猜拳小游戏——石头剪刀布的一个描述以及代码展现石头剪刀布游戏代码的简介:关于石头剪刀布这个小游戏,大致得到思路就是,玩家出一个手势,然后电脑再随机出一个手势,最后再判断是玩家获胜还是电脑获胜。最简单的思路就是将这三个手势是三个代号来表示,然后再去判断代号之间的关系,最后输出胜方。最一般情况下,最先想到的就是使用1、2、3数字来对三个手势进行代号化,然后再通过代号的大小去判断...

weixin_39627052的博客 828

python猜拳游戏编程代码_Python实现猜拳小游戏

曾经给一个小屁孩做的作业,放出来分享...实现思路:定义一个玩家类;实现获取用户的输入。定义一个机器人类;实现机器人的输入。定义一个裁判类;裁判判断双方胜负。定义游戏桌面;实现游戏的启动和管理。完整代码:import random#定义错误规则类,当玩家输入错误的值时需要触发这个。class RulesError(Exception):pass#动作集ACTSET={1:'石头',2:'剪刀',3...

weixin_39809584的博客 2701

Python--猜拳小游戏

使用python做一个猜拳小游戏来巩固我们学习的知识,欢迎大家前来阅读

夜思红尘的博客 2147

Python实战案例:猜拳小游戏三人进阶版

本文介绍了如何用Python代码实现三人对战版本的猜拳小游戏。与传统的双人对战版本相比,三人对战的手势组合从9种增加到27种,复杂度显著提升。

an_yu_xin的博客 1027

python基础猜拳小游戏

Python入门小游戏 (娱乐一下下) 学过JAVA和PHP后, 个人认为Python入门相较略为简单,不过业务逻辑都是一样的。不存在简单与否。 随便写写一个猜拳小游戏吧~ #导入随机数函数,生成一个随机数 import random #让用户输入剪刀石头布 player = input('请输入:剪刀(0) 石头(1) 布(2):') #转为整数类型 player = int(play...

crdzg_Amy的博客 746

python猜拳小游戏

游戏规则: 玩家和电脑进行三局两胜游戏 玩家输入012,0石头1剪刀2布3退出 电脑随机生成结果 只要玩家先赢两局,或者电脑先赢两句,就结束比赛 import random print("欢迎进入猜拳小游戏") print("只要玩家先赢两局,或者电脑先赢两句,就结束比赛") alist = ["石头","剪刀","布"] #定义一个列表 winlist = ["石头剪刀","剪刀布","布石头"...

千寻的博客 2306

python手机版做小游戏代码大全-python实现猜拳小游戏

python实现猜拳小游戏,供大家参考,具体内容如下本练习旨在养成良好的编码习惯和练习逻辑思考.1、使用python版本: 3.7.3;2、代码内容实现如下#!/usr/bin/env python# -*- coding: utf-8 -*-"""简单实现猜拳小游戏,默认每回合 五局Version: 0.1Author: smartbabbleDate: 2018...

weixin_37988176的博客 614
上一篇: Python课程设计 | 实现学生信息管理系统
下一篇: 有关 python 切片的趣事
大模型应用场景
博客等级 码龄5年 7125粉丝 1351原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值