CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思路和实现代码,同时也学习学习其他大神写的代码。

CheckiO 官网:https://checkio.org/

我的 CheckiO 主页:https://py.checkio.org/user/TRHX/

CheckiO 题解系列专栏:https://itrhx.blog.csdn.net/category_9536424.html

CheckiO 所有题解源代码:https://github.com/TRHX/Python-CheckiO-Exercise


题目描述

【The Warriors】:这个题目的故事大概就是说有个车夫抢了个女孩,然后被一个爵士遇到了,爵士要救这个女孩,就要和车夫决斗,将爵士和车夫命名为 Warrior 和 Knight,两者的生命值(50点)相同但攻击力不相同,Warrior 攻击力为 5 点,Knight 攻击力为 7 点,他们之间不断来回攻击,每一个回合,被攻击者将减去相应的生命值,战斗以其中之一的死亡而告终。

我们需要创建一个 Warrior 类,这个类将具有 2 个参数:生命值(50点)和攻击力(5点),以及 1 个属性:is_alive,如果战士的生命值大于0,其值为 True,否则为 False。另外,还需要创建一个 Knight 类,该类是 Warrior 的子类,其攻击力参数为 7。此外,还必须创建一个函数 fight(),该函数的功能是判断谁是最强的,谁会活到最后。

【链接】:https://py.checkio.org/mission/the-warriors/

【输入】:两个人物赋予不同的角色

【输出】:决斗的结果以及判断是否活着(True or False)

【范例】

chuck = Warrior()
bruce = Warrior()
carl = Knight()
dave = Warrior()fight(chuck, bruce) == True
fight(dave, carl) == False
chuck.is_alive == True
bruce.is_alive == False
carl.is_alive == True
dave.is_alive == False

解题思路

题目已经告诉我们了,创建两个类:WarriorKnight,其中 KnightWarrior 的子类,继承其生命值的参数和是否活着的属性,fight() 函数里面用于计算每次决斗两者的剩余生命值,判断其是否还活着。

代码实现

class Warrior:health = 50is_alive = Trueattack = 5class Knight(Warrior):attack = 7def fight(unit_1, unit_2):while unit_1.health > 0:unit_2.health -= unit_1.attackunit_1.health -= unit_2.attackif unit_2.health > unit_1.health:unit_1.is_alive = Falsereturn Falseelse:unit_2.is_alive = Falsereturn Trueif __name__ == '__main__':#These "asserts" using only for self-checking and not necessary for auto-testingchuck = Warrior()bruce = Warrior()carl = Knight()dave = Warrior()mark = Warrior()assert fight(chuck, bruce) == Trueassert fight(dave, carl) == Falseassert chuck.is_alive == Trueassert bruce.is_alive == Falseassert carl.is_alive == Trueassert dave.is_alive == Falseassert fight(carl, mark) == Falseassert carl.is_alive == Falseprint("Coding complete? Let's try tests!")

大神解答

大神解答 NO.1

class Warrior:def __init__(self):self.health = 50self.attack = 5@propertydef is_alive(self) -> bool:return self.health >= 0class Knight(Warrior):def __init__(self):super().__init__()self.attack = 7def fight(unit_1, unit_2):while unit_1.is_alive and unit_2.is_alive:unit_2.health -= unit_1.attackif unit_2.is_alive:unit_1.health -= unit_2.attackreturn unit_1.is_alive

大神解答 NO.2

class Warrior:def __init__(self):self.health = 50self.attack_points = 5def take_damage(self, damage):self.health -= damagedef attack(self, enemy):enemy.take_damage(self.attack_points)@propertydef is_alive(self):return self.health > 0class Knight(Warrior):def __init__(self):Warrior.__init__(self)self.attack_points = 7def fight(unit_1, unit_2):while True:unit_1.attack(unit_2)if not unit_2.is_alive:return Trueunit_2.attack(unit_1)if not unit_1.is_alive:return False

【Python CheckiO 题解】The Warriors相关推荐

  1. Python CheckiO 题解系列 丨 博客目录索引

    CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本题解系列主要记录自己在用 Python 闯关时的做 ...

  2. 【Python CheckiO 题解】Army Battles

    CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...

  3. 【Python CheckiO 题解】Date and Time Converter

    CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...

  4. 【Python CheckiO 题解】Largest Rectangle in a Histogram

    CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...

  5. 【Python CheckiO 题解】Roman Numerals

    CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...

  6. 【Python CheckiO 题解】Probably Dice

    CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...

  7. 【Python CheckiO 题解】Multicolored Lamp

    CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...

  8. 【Python CheckiO 题解】Time Converter (12h to 24h)

    CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...

  9. 【Python CheckiO 题解】Speech Module

    CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...

最新文章

  1. SQL SERVER中Datetime时间的范围与.net的DateTime对象的区别
  2. 企业轻资产化趋势难挡,易点租适时而起未来可期
  3. ssh客户端_Mobaxterm-不止是一款好用的SSH客户端软件
  4. 蓝桥杯java第八届第五题--取数位
  5. 3399元起!120Hz瞳孔屏+65W超级闪充,一加 8T今日发布
  6. TP5项目lnmp环境500错误
  7. UVM入坑系列笔记(一)
  8. 《数据库系统概念》14-静态散列
  9. 【版本控制】如何从github 上获取源码
  10. 数据恢复系列(4)~开源恢复工具
  11. Modelsim 教程
  12. 焦作机器人编程比赛_焦作市山阳区东环小学在第二十届全国中小学电脑制作活动“机器人竞赛”焦作选拔赛中创佳绩...
  13. win7如何调整计算机c盘,Win7系统增加C盘空间的方法
  14. 面试官常问的 web前端 问题(一)
  15. linux下gbd调试基础
  16. php 图片 圆角,php使用gd库在图片中画圆角矩形
  17. 统计学基础之常用统计量和抽样分布
  18. 如何安装cygwin
  19. Python进行零售商品数据分析
  20. Win7关闭防火墙的脚本

热门文章

  1. 构建之法现代软件概述
  2. 【HDU1325】Is It A Tree?(并查集基础题)
  3. Ubuntu 12.04(32位)安装Oracle 11g(32位)全过程以及几乎所有问题的解决办法
  4. 电脑无法打开特定网页_监理检测网校电脑微信无法打开公路试验检测视频课程的处理方法...
  5. string的反转输出以及char型字符串的反转输出
  6. Maven项目的基本创建步骤
  7. ansible获取linux信息,ansible 获取系统信息的一些范例,ansible系统信息
  8. python 文件状态_Python:如何访问文件的状态
  9. 计算机网络关于封装成帧题目,上海第二工业大学-计算机网络通信期中试卷答案...
  10. win10 python 调用模块_python常识系列14--gt;python通过jpype模块调用jar包