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

news2024/11/24 2:42:30
  •  🌈所属专栏:【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}错误!请重新输入序号')

总结

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

L53--- 144. 二叉树的后序遍历(深搜)---Java版

1.题目描述 2.思路 &#xff08;1&#xff09;比如 1/ \2 3从根节点开始&#xff1a; 初始时&#xff0c;currentSum 为 0。 根节点的值为 1。 更新后的 currentSum 0 * 10 1 1。 处理左子节点&#xff1a; 当前 currentSum 为 1&#xff08;即路径 “1”&#xff09;。…

AI预测体彩排3采取888=3策略+和值012路或胆码测试6月16日升级新模型预测第1弹

根据前面的预测效果&#xff0c;我对模型进行了重新优化&#xff0c;因为前面的模型效果不是很好。熟悉我的彩友比较清楚&#xff0c;我之前的主要精力是对福彩3D进行各种模型的开发和预测&#xff0c;排三的预测也就是最近1个月才开始搞的。3D的预测&#xff0c;经过对模型的多…

【Emacs Verilog mode保姆级的使用指南】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

FreeBSD jail虚拟容器里装ubuntu系统没有apt命令怎么办?

问题 在FreeBSD jail里使用linux兼容创建了ubuntu环境&#xff0c;但是没有apt命令&#xff0c;该怎么办呢&#xff1f; jail的介绍&#xff1a;FreeBSD jail 容器手册_freebsd虚拟化-CSDN博客 系统是这样进去的&#xff1a; jexec focal chroot /compat/ubuntu /bin/bash …

38、基于卷积神经网络(CNN)的车牌自动识别系统(matlab)

1、原理及流程 1&#xff09;原理 CNN&#xff08;卷积神经网络&#xff09;是一种深度学习模型&#xff0c;可以用于图像识别和分类任务。车牌自动识别系统的原理基本上就是使用CNN模型对车牌图像进行处理和识别。 首先&#xff1a;系统需要收集大量的含有车牌的图像数据作…

异常封装类统一后端响应的数据格式

异常封装类 如何统一后端响应的数据格式 1. 背景 后端作为数据的处理和响应&#xff0c;如何才能和前端配合好&#xff0c;能够高效的完成任务&#xff0c;其中一个比较重要的点就是后端返回的数据格式。 没有统一的响应格式&#xff1a; // 第一种&#xff1a; {"dat…

UniApp+Vue3使用Vant-微信小程序组件

第一步&#xff1a;打开创建好的UniappVue3的项目 第二步&#xff1a;下载Vant-Weapp npm i vant/weapp -S --production 第三步&#xff1a;修改目录名称 wxcomponents 必须是wxcomponents 第四步&#xff1a;将下载好的vant中的dist目录剪切到当前wxcomponents目录下 第五…

贪心算法学习五

例题一 解法&#xff08;贪⼼&#xff09;&#xff1a; 贪⼼策略&#xff1a; 我们的任何选择&#xff0c;应该让这个数尽可能快的变成 1 。 对于偶数&#xff1a;只能执⾏除 2 操作&#xff0c;没有什么分析的&#xff1b; 对于奇数&#xff1a; i. 当 n 1 的时候…

低代码开发MES系统,一周实现数字化

随着工业4.0和智能制造的兴起&#xff0c;企业对于生产过程的数字化、智能化需求日益迫切。制造执行系统&#xff08;MES&#xff09;作为连接计划层与控制层的关键信息系统&#xff0c;在提升生产效率、优化资源配置、保障产品质量等方面发挥着重要作用。然而&#xff0c;传统…

不可不知的Java SE技巧:如何使用for each循环遍历数组

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。运营社区&#xff1a;C站/掘金/腾讯云&#xff1b;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一…

LVGL刷屏优化(基于ESP32)

主要参考资料&#xff1a; 乐鑫ESP-IDF官方手册SPI Flash and External SPI RAM Configuration: https://docs.espressif.com/projects/esp-idf/zh_CN/release-v5.0/esp32s3/api-guides/flash_psram_config.html 目录 驱动和端口优化RAM与PSRAMFLASH SPI与PSRAM SPI LVGL优化修…

使用Vue中的<TransitionGroup/>进入动画不生效不显示问题

Vue中有两个过渡动画组件分别是&#xff1a;<TransitionGroup/> <TransitionGroup/>进入动画不生效不显示问题 &#xff0c;在渲染列表上加上v-if&#xff0c;看代码&#xff0c;让他每次渲染都重新渲染 加上v-if即可 <template> <TransitionGroup nam…

Day01_Ajax入门

文章目录 学习目标一、AJAX 概念和 axios 使用1. 目标2. 讲解2.1 什么是 AJAX ?2.2 什么是服务器&#xff1f;2.3 为何学 AJAX ?2.4 怎么学 AJAX ?2.5 例子2.6 axios语法 二、认识 URL1. 目标2. 讲解2.1 为什么要认识 URL ?2.2 什么是 URL &#xff1f;2.3 URL的组成 &…

手把手教你改造Sentinel Dashboard 实现配置持久化

一. 概述 Sentinel客户端默认情况下接收到 Dashboard 推送的规则配置后&#xff0c;可以实时生效。但是有一个致命缺陷&#xff0c;Dashboard和业务服务并没有持久化这些配置&#xff0c;当业务服务重启后&#xff0c;这些规则配置将全部丢失。 Sentinel 提供两种方式修改规则…

【C语言】解决C语言报错:Use of Uninitialized Variable

文章目录 简介什么是Use of Uninitialized VariableUse of Uninitialized Variable的常见原因如何检测和调试Use of Uninitialized Variable解决Use of Uninitialized Variable的最佳实践详细实例解析示例1&#xff1a;局部变量未初始化示例2&#xff1a;数组未初始化示例3&…

Linux iptables使用详解

一、Linux系统下使用iptables 在Linux中&#xff0c;常用的防火墙工具是iptables。以下是一些基本的iptables命令&#xff0c;用于配置防火墙规则。 查看现有的iptables规则&#xff1a; sudo iptables -L 清除所有现有的规则&#xff08;慎用&#xff0c;可能导致服务不可用…

基于android开发平台的聊天软件实现(论文+源码)_kaic

摘要&#xff1a;互联网时代的到来使得手机通讯变得更为普及和强大&#xff0c;人们可以随时随地地进行交流。由于工作的繁忙以及生活节奏的加快&#xff0c;人们无法有更多时间展开面对面的交谈&#xff0c;导致在线聊天软件的使用更加频繁&#xff0c;所以本文尝试设计了一款…

代码随想录算法训练营第六十二天 | 739.每日温度、496.下一个更大元素 I、503.下一个更大元素II

739.每日温度 文字讲解&#xff1a;代码随想录 视频讲解&#xff1a;单调栈&#xff0c;你该了解的&#xff0c;这里都讲了&#xff01;LeetCode:739.每日温度_哔哩哔哩_bilibili 解题思路 思路一&#xff1a;暴力双循环 O&#xff08;n^2&#xff09; 思路二&#xff1a;单…

医学人工智能项目如何申请基金?

小罗碎碎念 本期推文面向的群体 青年教师有志硕博/博后 尤其适合一直认真追小罗推文的老师/同学&#xff0c;你们会发现自己在看这篇推文的时候&#xff0c;遇到自己领域的项目时&#xff0c;文思如泉涌&#xff0c;仿佛马上就能把本子写好&#xff0c;哈哈。&#xff08;运用…

phpStudy安装sqli-labs

phpStudy安装sqli-labs git地址&#xff1a;https://github.com/Audi-1/sqli-labs 点击管理–>根目录 将git下载的sqli-labs文件放进去并解压 进入sql-connections修改 修改db-creds.inc文件为自己数据库的账号密码 更改php版本为5.*&#xff0c;因为这个程序只能在php 5.…