【Python CheckiO 题解】The Warriors
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
解题思路
题目已经告诉我们了,创建两个类:Warrior
和 Knight
,其中 Knight
是 Warrior
的子类,继承其生命值的参数和是否活着的属性,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相关推荐
- Python CheckiO 题解系列 丨 博客目录索引
CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本题解系列主要记录自己在用 Python 闯关时的做 ...
- 【Python CheckiO 题解】Army Battles
CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...
- 【Python CheckiO 题解】Date and Time Converter
CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...
- 【Python CheckiO 题解】Largest Rectangle in a Histogram
CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...
- 【Python CheckiO 题解】Roman Numerals
CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...
- 【Python CheckiO 题解】Probably Dice
CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...
- 【Python CheckiO 题解】Multicolored Lamp
CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...
- 【Python CheckiO 题解】Time Converter (12h to 24h)
CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...
- 【Python CheckiO 题解】Speech Module
CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...
最新文章
- SQL SERVER中Datetime时间的范围与.net的DateTime对象的区别
- 企业轻资产化趋势难挡,易点租适时而起未来可期
- ssh客户端_Mobaxterm-不止是一款好用的SSH客户端软件
- 蓝桥杯java第八届第五题--取数位
- 3399元起!120Hz瞳孔屏+65W超级闪充,一加 8T今日发布
- TP5项目lnmp环境500错误
- UVM入坑系列笔记(一)
- 《数据库系统概念》14-静态散列
- 【版本控制】如何从github 上获取源码
- 数据恢复系列(4)~开源恢复工具
- Modelsim 教程
- 焦作机器人编程比赛_焦作市山阳区东环小学在第二十届全国中小学电脑制作活动“机器人竞赛”焦作选拔赛中创佳绩...
- win7如何调整计算机c盘,Win7系统增加C盘空间的方法
- 面试官常问的 web前端 问题(一)
- linux下gbd调试基础
- php 图片 圆角,php使用gd库在图片中画圆角矩形
- 统计学基础之常用统计量和抽样分布
- 如何安装cygwin
- Python进行零售商品数据分析
- Win7关闭防火墙的脚本
热门文章
- 构建之法现代软件概述
- 【HDU1325】Is It A Tree?(并查集基础题)
- Ubuntu 12.04(32位)安装Oracle 11g(32位)全过程以及几乎所有问题的解决办法
- 电脑无法打开特定网页_监理检测网校电脑微信无法打开公路试验检测视频课程的处理方法...
- string的反转输出以及char型字符串的反转输出
- Maven项目的基本创建步骤
- ansible获取linux信息,ansible 获取系统信息的一些范例,ansible系统信息
- python 文件状态_Python:如何访问文件的状态
- 计算机网络关于封装成帧题目,上海第二工业大学-计算机网络通信期中试卷答案...
- win10 python 调用模块_python常识系列14--gt;python通过jpype模块调用jar包