Python3 基础语法练习小Demo

反恐精英基础版

一个精英对一个匪徒。

分析

  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()

猜你喜欢

转载自blog.csdn.net/weixin_52610802/article/details/125576695