Python3 基础语法练习小Demo

2023-10-27

反恐精英基础版

一个精英对一个匪徒。

分析

  1. 定义人类,描述公共属性 life:100name:姓名要传参
  2. 定义出英雄与恐怖分子类
  3. 定义主函数描述枪战过程 main,创建两个对象
  4. 定义开抢方法,分成两个方法,HeroIs 都有
    • 定义的方法要传入被射击的对象
    • 被射击对象的生命值要减少
  5. 主程序中调用开抢操作
  6. 开抢操作后,要在主程序中显示每个人的状态信息
  7. 定义 Person 类中的 __str__ 方法,用于显示每个人的状态
  8. 设置开抢操作为反复操作
    • 设置枪战停止条件:一方生命值<=0
    • 停止循环使用break

代码实现

class Person:
    def __init__(self, name):
        self.name = name
        self.life = 100

    def __str__(self):
        return "%s当前生命值为:[%d]" % (self.name, self.life)


class Hero(Person):
    def fire(self, person):
        damage = 40
        print("%s向%s开抢,造成了[%d]伤害" % (self.name, person.name, damage))
        person.life -= damage


class Is(Person):
    def fire(self, person):
        damage = 90
        print("%s向%s开抢,造成了[%d]伤害" % (self.name, person.name, damage))
        person.life -= damage


def main():
    h = Hero("【英雄】")
    is1 = Is("【不要命】")

    while True:
        h.fire(is1)
        is1.fire(h)
        print(h)
        print(is1)
        print()
        # 结束枪战
        if h.life <= 0:
            print("%s死亡,枪战结束" % h.name)
            break

        # 结束枪战
        if is1.life <= 0:
            print("所有恐怖分子全部死亡,枪战结束")
            break


# 执行主函数
main()

反恐精英修复版

分析

  1. 修复英雄的信息显示模式,状态描述
    • 100:无伤
    • 70-99:轻伤
    • 1-69:重伤
    • 0:挂了
  2. 修复生命值为负的问题
    • 射击时,如果生命值<伤害值,生命值=0,否则正常减生命
    • 三元表达式:变量 = 成立值 if 条件 else 不成立值

代码实现

class Person:
    def __init__(self, name):
        self.name = name
        self.life = 100

    def __str__(self):
        return "%s当前生命值为:[%d]" % (self.name, self.life)


class Hero(Person):
    def fire(self, person):
        damage = 40
        print("%s向%s开抢,造成了[%d]伤害" % (self.name, person.name, damage))
        # 三元表达式:变量 = 成立值 if 条件 else 不成立值
        person.life = 0 if person.life < damage else (person.life - damage)

    def __str__(self):
        state = ""
        if self.life == 100:
            state = "无伤"
        elif 70 <= self.life < 100:
            state = "轻伤"
        elif 1 <= self.life < 70:
            state = "重伤"
        elif self.life <= 0:
            state = "挂了"

        return "%s当前的状态为:%s" % (self.name, state)


class Is(Person):
    def fire(self, person):
        damage = 20
        print("%s向%s开抢,造成了[%d]伤害" % (self.name, person.name, damage))
        person.life = 0 if person.life < damage else (person.life - damage)


def main():
    h = Hero("【英雄】")
    is1 = Is("【不要命】")

    while True:
        h.fire(is1)
        is1.fire(h)

        print(h)
        print(is1)
        print()

        # 结束枪战
        if h.life <= 0:
            print("%s死亡,枪战结束" % h.name)
            break

        # 结束枪战
        if is1.life <= 0:
            print("所有恐怖分子全部死亡,枪战结束")
            break


# 执行主函数
main()

反恐精英加强版

一个精英对三个匪徒。

分析

  1. 创建三个恐怖分子对象,三个对象都要开抢,三个对象都要打印状态
  2. 修复结束条件为三个恐怖分子都死亡,三个满足同时死亡 and
  3. 解决向三个恐怖分子开抢的问题
    • 随机数:random
      1. 使用random:所有代码前增加 import random
      2. 使用 random.randint(1, 3) 可以产生1到3的随机数
    • 产生一个随机数,判断是几就向几号敌人开枪

代码实现

反恐精英超级加强版

分析

  1. 加入开枪射击命中率
  2. 加入开枪伤害值波动
  3. 加入鞭尸文字显示效果

代码实现

import random


class Person:
    def __init__(self, name):
        self.name = name
        self.life = 100

    def __str__(self):
        return "%s当前生命值为:[%d]" % (self.name, self.life)


class Hero(Person):
    def fire(self, person):
        # 增加命中率
        hit = random.randint(1, 100)
        # 80% 命中率
        if hit > 20:
            # 增加鞭尸判断
            if person.life <= 0:
                print("%s都死了,就不要鞭尸了" % person.name)
            else:
                # 加入伤害波动值
                damage = random.randint(41, 60)
                print("%s向%s开抢,造成了[%d]伤害" % (self.name, person.name, damage))
                # 三元表达式:变量 = 成立值 if 条件 else 不成立值
                person.life = 0 if person.life < damage else (person.life - damage)
        else:
            print("没有打到恐怖分子,这什么垃圾枪法~~~")

    def __str__(self):
        state = ""
        if self.life == 100:
            state = "无伤"
        elif 70 <= self.life < 100:
            state = "轻伤"
        elif 1 <= self.life < 70:
            state = "重伤"
        elif self.life <= 0:
            state = "挂了"

        return "%s当前的状态为:%s" % (self.name, state)


class Is(Person):
    def fire(self, person):
        damage = random.randint(1, 20)
        # 增加命中率
        hit = random.randint(1, 100)
        # 30% 命中率
        if hit > 70:
            print("%s向%s开抢,造成了[%d]伤害" % (self.name, person.name, damage))
            person.life = 0 if person.life < damage else (person.life - damage)
        else:
            print("%s枪法不行呀,再去练练吧~~~" % self.name)


def main():
    h = Hero("【英雄】")
    is1 = Is("【不要命】")
    is2 = Is("【不怕死】")
    is3 = Is("【还有谁】")

    while True:
        # 产生一个随机数
        x = random.randint(1, 3)
        if x == 1:
            h.fire(is1)
        elif x == 2:
            h.fire(is2)
        else:
            h.fire(is3)

        # 结束枪战
        if is1.life <= 0 and is2.life <= 0 and is3.life <= 0:
            print("所有恐怖分子全部死亡,枪战结束")
            break

        is1.fire(h)
        is2.fire(h)
        is3.fire(h)

        # 结束枪战
        if h.life <= 0:
            print("%s死亡,枪战结束" % h.name)
            break

        print(h)
        print(is1)
        print(is2)
        print(is3)
        print()


# 执行主函数
main()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python3 基础语法练习小Demo 的相关文章

随机推荐

  • Mybatis基础知识浅谈

    Mybatis浅谈 目录 1 什么是Mybatis 2 Mybatis的快速入门 2 1MyBatis开发步骤 2 2 环境搭建 3 MyBatis的增删改查操作 3 1 MyBatis的插入数据操作 3 2 MyBatis的修改数据操作
  • 可执行文件的格式(ELF格式)详解

    各种讲解elf文件格式一上来就是各种数据类型 看了半天却不知道这些数据类型是干啥的 所以咱就先找个例子直接上手 这样对elf文件格式有个具体而生动的了解 然后再去看那些手册 就完全不惧了 我们使用一个汇编程序max s并对其进行编译链接产生
  • vant 使用deep修改样式不好使解决方案

  • php7 libevent扩展,PHP7 安装event扩展的实现方法

    Libevent 是一个用C语言编写的 轻量级的开源高性能I O框架 支持多种 I O 多路复用技术 epoll poll dev poll select 和 kqueue 等 支持 I O 定时器和信号等事件 注册事件优先级 PHP提供了
  • 【牛客】四选一多路器

    描述 制作一个四选一的多路选择器 要求输出定义上为线网类型 状态转换 d0 11 d1 10 d2 01 d3 00 信号示意图 波形示意图 输入描述 输入信号 d1 d2 d3 d4 sel 类型 wire 输出描述 输出信号 mux o
  • 前端面试题之React

    文章目录 1 React生命周期 V16 3 之前 挂载阶段 组件更新阶段 卸载阶段 新增后 挂载阶段 更新阶段 static getDerivedStateFromProps shouldComponentUpdate render ge
  • SSM myBatis 配置及自动生成Bean 和 Dao

    因为我发现在做SSM 的配置的时候 配置中出现一点问题都会导致项目打包失败或者其他问题 但是我发现网上很多都没有贴出每个配置文件的代码 如果是新手在配置上就会走很多的弯路 所以这里我贴出所有配置文件的代码 这样会方便很多新手快速的构建正确的
  • Arduino控制舵机

    一 舵机一般有三根线 和Arduino连接一般如下 二 代码分析 include
  • 为什么我们使用Story Points进行估算?

    故事点 Story Points 简介 Scrum指南告诉我们 估算应该由将要完成工作的人提供 但它并没有告诉我们应该如何提供估算 它把这个决定留给了我们 Scrum团队使用的一种常见策略是使用称为故事点的度量单位进行估算 但为什么要使用S
  • hive的row_number()、rank()和dense_rank()的区别以及具体使用

    row number rank 和dense rank 这三个是hive内置的分析函数 下面我们来看看他们的区别和具体的使用案例 首先创建一个文件test A 1 B 3 C 2 D 3 E 4 F 5 G 6 1 2 3 4 5 6 7
  • 国际化字符编码处理总结

    在处理国际化时 处理不当就会产生乱码 通用的做法是都转换为UTF 8编码 对于高层开发语言十分简单 对于底层编程语言则有些复杂 其中涉及的概念也有很多 字符是指计算机中使用的字母 数字 字和符号 包括 1 2 3 A B C 等等 在 AS
  • ‘‘‘python‘‘‘内置函数

    目录 关键字 class 定义类 内置函数 和定义函数的调用一致 常用方法 字符串的方法
  • lua/luci入门

    lua 注释 单行注释 多行注释 数据类型可以用type函数判断 nil 未使用过的变量 既是值 也是类型 boolean string number 相当于c里的double table 唯一的数据结构 基本与php数组类型同 索引数组从
  • openwrt之Uci

    Openwrt中所有的配置文件都存放再 etc config中 uci是openwrt中用来修改配置文件的一个软件 一 配置文件的格式 config声明一个section example 指的是section的type 也就是类型 test
  • C++ 多语言切换

    如果设置UI资源文件非重点不做介绍 设置英文版接口 SetThreadUILanguage MAKELANGID LANG ENGLISH SUBLANG ENGLISH US 此时如果操作系统的语言选择的是简体中文 那么掉系统的AfxMe
  • 已解决(Python3中pip无法安装urllib报错问题)No matching distribution found for urllib

    已解决 Python3中pip无法安装urllib报错问题 ERROR Could not find a version that satisfies the requirement urllib from versions none ER
  • selenium 下载文件取消安全下载的配置

    使用 selenium 下载碰见的问题 文件存在危险 因此 Chrome 已将其拦截 查找了很多配置文件都无法解决这个问题 经过多次测试 下面的参数配置可以解决这个问题 selenium 下载文件取消安全下载的配置 如果想要下载文件 可以添
  • MATLAB/Simulink 永磁同步电机启动(I/F控制) 中高速运行(滑模观测器控制/磁链观测器)

    MATLAB Simulink 永磁同步电机启动 I F控制 中高速运行 滑模观测器控制 磁链观测器 运行模式间切换方案设计 性能要求 价格等方面请加好友 卡尔曼滤波器加锁相环 ID 1628564485704566696Elaine
  • java jen部署_CSS布局:Jen Simmons的网格,区域和@Supports

    java jen部署 In this episode of the Versioning Show Tim and David are joined by Jen Simmons Designer Advocate at Mozilla a
  • Python3 基础语法练习小Demo

    文章目录 反恐精英基础版 分析 代码实现 反恐精英修复版 分析 代码实现 反恐精英加强版 分析 代码实现 反恐精英超级加强版 分析 代码实现 反恐精英基础版 一个精英对一个匪徒 分析 定义人类 描述公共属性 life 100 name 姓名