python简单练习案例-石头剪刀布小游戏

  •  🌈所属专栏:【python】

  •  ✨作者主页:  Mr.Zwq

  • ✔️个人简介:一个正在努力学技术的Python领域创作者,擅长爬虫,逆向,全栈方向,专注基础和实战分享,欢迎咨询!

您的点赞、关注、收藏、评论,是对我最大的激励和支持!!!🤩🥰😍

目录

前言 

效果图

开始时,进行模式选择

一局定胜负模式

三局两胜模式

错误异常输入处理

代码实现

1.电脑出招函数

 2.玩家出招函数

 3.胜负判断函数

 4.执行函数

 5.代码完整展示


前言 

        本案例将会通过对python基本知识的应用来实现一个模拟石头剪刀布的小游戏,将使用到字典、列表类型数据、while、if循环判断、函数以及random模块的使用,可以通过实现这个小案例来巩固加深自身python的知识。

        代码模拟了石头、剪刀、布游戏的几个主要方面:玩家和电脑的出招,胜负的判断,以及游戏的流程控制。


效果图

开始时,进行模式选择

一局定胜负模式

三局两胜模式

错误异常输入处理


代码实现

1.电脑出招函数

# 模拟电脑随机出招
def computer():
    return random.choice(['石头','剪刀','布'])

 2.玩家出招函数

def player():
    # 这里用字典映射是为了方便玩家通过输入序号就可以代替出拳,简化玩家打字操作
    dic = {'1': '石头', '2': '剪刀', '3': '布'}
    res=input('1-石头,2-剪刀,3-布\n请输入序号:')
    # 进行错误处理,规避无效出拳序号
    if res not in dic.keys():
        print(f'\n序号{res}错误!请重新输入正确的序号')
        return player()
    return dic[res]

 3.胜负判断函数

def judge(player,computer):
    if player == computer:
        return '平局'
    if player == '石头':
        if computer == '剪刀':
            return '玩家胜'
        else:
            return '电脑胜'
    elif player == '剪刀':
        if computer == '布':
            return '玩家胜'
        else:
            return '电脑胜'
    else:
        if computer == '石头':
            return '玩家胜'
        else:
            return '电脑胜'

 4.执行函数

# 循环,直到玩家进行退出操作
while True:
    print('操作选择'.center(20, '*'))
    res = input('1.一局定胜负\n2.三局两胜\n3.退出\n请输入对应序号:')
    if res == '1':
        print('一局定胜负'.center(20, '*'))
        # 电脑输出
        computer_output = computer()
        # 玩家输出   
        player_output = player()
        # 结果输出
        print(f'玩家出<{player_output}>,电脑出<{computer_output}>,{judge(player_output, computer_output)}\n')
    elif res == '2':
        print('三局两胜'.center(20, '*'))
        player_win = 0    # 记录玩家胜局次数
        computer_win = 0  # 记录电脑胜局次数
        while True:
            computer_output = computer()
            player_output = player()
            res = judge(player_output, computer_output)
            print(f'玩家出<{player_output}>,电脑出<{computer_output}>,{res}\n')
            if res == '玩家胜':
                player_win += 1
            elif res == '电脑胜':
                computer_win += 1
            # 三局两胜逻辑,谁先胜2局,就可以结束退出了
            if player_win >= 2 or computer_win >= 2:   
                print(f'最终结果:玩家胜{player_win}局,电脑胜{computer_win}局')
                break
    elif res == '3':
        break
    else:
        # 错误处理
        print(f'\n序号{res}错误!请重新输入序号')

 5.代码完整展示

import random


# 模拟电脑随机出招
def computer():
    return random.choice(['石头', '剪刀', '布'])


def player():
    # 这里用字典映射是为了方便玩家通过输入序号就可以代替出拳,简化玩家打字操作
    dic = {'1': '石头', '2': '剪刀', '3': '布'}
    res = input('1-石头,2-剪刀,3-布\n请输入序号:')
    # 进行错误处理,规避无效出拳序号
    if res not in dic.keys():
        print(f'\n序号{res}错误!请重新输入正确的序号')
        return player()
    return dic[res]


def judge(player, computer):
    if player == computer:
        return '平局'
    if player == '石头':
        if computer == '剪刀':
            return '玩家胜'
        else:
            return '电脑胜'
    elif player == '剪刀':
        if computer == '布':
            return '玩家胜'
        else:
            return '电脑胜'
    else:
        if computer == '石头':
            return '玩家胜'
        else:
            return '电脑胜'


# 循环,直到玩家进行退出操作
while True:
    print('操作选择'.center(20, '*'))
    res = input('1.一局定胜负\n2.三局两胜\n3.退出\n请输入对应序号:')
    if res == '1':
        print('一局定胜负'.center(20, '*'))
        # 电脑输出
        computer_output = computer()
        # 玩家输出
        player_output = player()
        # 结果输出
        print(f'玩家出<{player_output}>,电脑出<{computer_output}>,{judge(player_output, computer_output)}\n')
    elif res == '2':
        print('三局两胜'.center(20, '*'))
        player_win = 0    # 记录玩家胜局次数
        computer_win = 0  # 记录电脑胜局次数
        while True:
            computer_output = computer()
            player_output = player()
            res = judge(player_output, computer_output)
            print(f'玩家出<{player_output}>,电脑出<{computer_output}>,{res}\n')
            if res == '玩家胜':
                player_win += 1
            elif res == '电脑胜':
                computer_win += 1
            # 三局两胜逻辑,谁先胜2局,就可以结束退出了
            if player_win >= 2 or computer_win >= 2:
                print(f'最终结果:玩家胜{player_win}局,电脑胜{computer_win}局')
                break
    elif res == '3':
        break
    else:
        # 错误处理
        print(f'\n序号{res}错误!请重新输入序号')

总结

感谢观看,原创不易,如果觉得有帮助,请给文章点个赞吧,让更多的人看到。🌹🌹🌹

👍🏻也欢迎你,关注我。👍🏻

如有疑问,可在评论区留言哦~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/711408.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

在 Windows 环境下安装mysql步骤(MySQL)

文章目录 一、下载 MySQL二、解压安装包到磁盘三、配置环境&#xff08;管理员权限&#xff09;四、安装 MySQL&#xff08;管理员权限&#xff09; 一、下载 MySQL 如下图&#xff1a;为你的电脑下载对应操作系统的 MySQL 安装包 二、解压安装包到磁盘 三、配置环境&#x…

sprintboot容器功能

容器 容器功能Spring注入组件的注解Component&#xff0c;Controller&#xff0c;Service&#xff0c;Repository案例演示 Configuration应用实例传统方式使用Configuration 注意事项和细节 Import应用实例 ConditionalConditional介绍应用实例 ImportResource应用实例 配置绑定…

金融科技:推动保险行业数字化转型的引擎

随着科技的飞速发展&#xff0c;金融科技&#xff08;FinTech&#xff09;已经成为推动金融行业变革的重要力量。特别是在保险行业&#xff0c;金融科技正引领着一场深刻的数字化转型&#xff0c;为保险公司带来了前所未有的机遇与挑战。本文将探讨金融科技如何推动保险行业的数…

redis设计与实现(五)RDB与AOF持久化

RDB持久化 因为Redis是内存数据库&#xff0c;它将自己的数据库状态储存在内存里面&#xff0c;所以如果不想办法将储存在内存中的数据库状态保存到磁盘里面&#xff0c;那么一旦服务器进程退出&#xff0c;服务器中的数据库状态也会消失不见。 为了解决这个问题&#xff0c;…

Go TOKEN机制与跨域处理方式

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

java学习 项目篇 一

学习地址&#xff1a;https://www.bilibili.com/video/BV1TP411v7v6?p6&spm_id_frompageDriver&vd_sourcea6f7db332f104aff6fadf5b3542e5875 后端环境搭建 Entity 实体&#xff0c;通常和数据库的表对应DTO 数据传输对象&#xff0c;用于程序中各层之间传递数据 (前端…

Windows安装配置CUDA12.5

搞大模型往往都需要GPU加速&#xff0c;本次在家里的PC上安装CUDA来实现GPU加速。 一、环境准备 操作系统&#xff1a;Windows11 23H2 GPU&#xff1a;RTX 4070 Ti Super 显卡驱动&#xff1a;555.99 &#xff08;NVIDIA GeForce 驱动程序 - N 卡驱动 | NVIDIA&#xff09; …

LaDM3IL:多实例学习用于免疫库分类

一个人的免疫组库由某一时间点的大量适应性免疫受体组成&#xff0c;代表了该个体的适应性免疫状态。免疫组库分类和相关受体识别有可能为新型疫苗的开发做出贡献。大量的实例对免疫组库分类提出了挑战&#xff0c;这可以表述为大规模多实例学习 (MMIL&#xff0c;Massive Mult…

C#——只读属性readonly

只读属性readonly 类的字段可以通过一个readonly(只读)表示这个为只读字段&#xff0c;不能被构造函数之外地方进行修改&#xff0c;静态只读字段不能在非静态的构造函数中使用 定义 只读属性的特点&#xff1a; 字段是只读的非静态 只能在非静态方法中进行修改 字段是只读的…

QT小技巧

QT小技巧 滑条的美化 美化前 代码如下 //滑条的美化ui->horizontalSlider->setStyleSheet("QSlider::groove:horizontal {""border:1px solid skyblue;""background-color:skyblue;""height:10px;""border-radius:5px…

勒索病毒剖析

2016年不自己勒索了 卖病毒 让别人勒索 傻瓜式勒索 黑客用的是非对称加密 全世界只有黑客有那把私钥 反向解密不了 传统爆破容易被检测&#xff0c;黑客慢速爆破&#xff0c;利用超级多的僵尸进行试错&#xff0c;慢慢试出来账号密码 因为一般运维设备在防火墙的白名单里&…

SSM 基于大数据技术的创业推荐系统-计算机毕业设计源码02979

摘 要 科技进步的飞速发展引起人们日常生活的巨大变化&#xff0c;电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流&#xff0c;人类发展的历史正进入一个新时代。在现实运用中&#xff0c;应用软件的工作…

IS022000认证:食品安全管理的金标准

食品安全是食品行业的命脉&#xff0c;IS022000食品安全管理体系认证作为最权威的认证之一&#xff0c;为企业提供了强有力的保障。要理解IS022000认证的意义&#xff0c;我们需要先了解它与HACCP和IS09001认证的关系。 HACCP&#xff08;Hazard Analysis and Critical Control…

【Webpack】使用 Webpack 构建 Vue3+TS 项目

构建项目目录 tsc --init npm init -yshim.d.ts 文件是一个类型声明文件&#xff0c;用于告诉 TypeScript 编译器如何处理 Vue 的单文件组件&#xff08;SFC&#xff09;和其他自定义模块。为 Vue 的单文件组件和其他非 TypeScript 模块提供类型信息&#xff0c;以便在 TypeScr…

Redis的安装(linux、docker)与其基本的api使用

一、Redis简介 Redis是一个开源的&#xff0c;使用 C 编写&#xff0c;高性能的Key-Value的NoSQL数据库。 SQL &#xff1a;关系型数据库&#xff0c;例如&#xff1a;MySQL&#xff0c;Oracle等等NoSQL &#xff1a;Not Only SQL 不仅仅是SQL&#xff0c;表示是非关系型数据库…

java之mybatis笔记

1 项目创建 1.1 maven设置 1.2 创建项目文件 1.3 配置MyBatis的相关依赖 1.4 配置 MyBatis 创建一个 mybatis-config.xml 配置文件&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org…

【java】指定类,指定package,找到package下面,这个类的所有子类

目录 ■java代码 ■注意 ■运行效果 ■包的结构 ■java代码 package com.sxz.study.reflect;import java.io.File; import java.io.IOException; import java.net.URL; import java.util.ArrayList; import java.util.Enumeration; import java.util.List;public class …

观察者模式(大话设计模式)C/C++版本

观察者模式 扩展&#xff1a;观察者模式——委托 C 参考&#xff1a;https://www.cnblogs.com/Galesaur-wcy/p/15905936.html #include <iostream> #include <list> #include <memory> #include <string> using namespace std;// Observer类 抽象观…

【Spine学习09】之导入皮肤两种方式[skin]

第一种&#xff1a;明确项目中某个角色是有两套皮肤的情况下 直接导入两套皮肤 1、添加SKIN皮肤指令 2、在ps中-文件-脚本-浏览【打开选中jsx脚本】 3、打开Spine 点击左上角&#xff0c;选择导入数据 就可以看到该角色的两套皮肤啦&#xff01; 第二种&#xff1a;刚开始角…

探索档案未来,尽在ARCHE-2024

2024年第三届上海国际智慧档案展览会暨高峰论坛&#xff08;ARCHE-2024&#xff09;将于2024年6月19日至21日在上海跨国采购会展中心隆重举行。深圳市铨顺宏科技有限公司应邀参展&#xff0c;将以全新形象盛装亮相&#xff0c;展示其在档案管理领域的最新技术和解决方案。 ARC…