栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python 基础语法练习小Demo

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python 基础语法练习小Demo

文章目录
  • 反恐精英基础版
    • 分析
    • 代码实现
  • 反恐精英修复版
    • 分析
    • 代码实现
  • 反恐精英加强版
    • 分析
    • 代码实现
  • 反恐精英超级加强版
    • 分析
    • 代码实现

反恐精英基础版

一个精英对一个匪徒。

分析
  1. 定义人类,描述公共属性 life:100,name:姓名要传参
  2. 定义出英雄与恐怖分子类
  3. 定义主函数描述枪战过程 main,创建两个对象
  4. 定义开抢方法,分成两个方法,Hero、Is 都有
    • 定义的方法要传入被射击的对象
    • 被射击对象的生命值要减少
  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()
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1000660.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号