【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

解题思路

题目已经告诉我们了,创建两个类: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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/437864.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Python CheckiO 题解】Multiply (Intro)

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

关于DateTime的一点记录 ToString(yyyy-MM-dd HH:mm:ss)

DateTime dt DateTime.Now; string z dt.ToString("yyyy-MM-dd HH:mm:ss");//你知道这个是“年月日时分秒”的格式吧? string a dt.ToString("yyyy-MM-dd HH:mm:ss ms");//这个你认为一定是 毫秒的格式? string b dt.ToString("yyyy-MM-dd HH:…

SharePoint List item数量超过5000的解决办法

SharePoint一个list里面的item数量超过5000会提示“视图无法显示,因为超过管理员限制设定的列表视图阈值” 在CSDN里面有比较好的解决方案,在这里先记录下来,以后有用 方案一,定期自动归档 不用写TimerJOb, 可以用cont…

什么是SharePoint?

在聊SharePoint开发之前,有必要说下什么是SharePoint. 在我工作的过程中,经常遇到客户对SharePoint不太了解的情况。有客户说,SharePoint太烂了,DropBox能做到的什么什么功能,SharePoint竟然做不到,很明显…

SharePoint 2013的REST编程基础

1. SharePoint 2013对REST编程的支持 自从SharePoint2013开始, SharePoint开始了对REST 编程的支持,这样除了.NET , Silverlight, Powershell之外, 又多了一种可以和SharePoint Server进行CSOM编程的方式。那么,问题来…

Office Web App2013 在线查看PDF文件

经常会有客户问,在SharePoint中,如何在浏览器中查看与编辑文档,通常给出的解决方案是集成Office Web App。 而在实际应用过程中,客户通常会要求实现PDF文件在线查看,对于PDF文件,office web App微软一直没…

Office Web Apps 2013 修改Excel在线查看文件大小限制

最近搭建了一个OWA 2013环境,帮客户实现在线查看Excel文档,不过,使用过程中出现了错误,文件大小超过10MB就无法预览了,查了好久,发现需要使用PowerShell命令进行修改。 1.出现的错误的截图: 2.可…

Azure Blob Storage 基本用法 -- Azure Storage 之 Blob

Azure Storage 是微软 Azure 云提供的云端存储解决方案,当前支持的存储类型有 Blob、Queue、File 和 Table。 笔者在《Azure Table storage 基本用法》一文中,介绍了 Table Storage 的基本用法,本文将通过 C# 代码介绍 Blob Storage 的主要使…

Azure Table storage 基本用法 -- Azure Storage 之 Table

Azure Storage 是微软 Azure 云提供的云端存储解决方案,当前支持的存储类型有 Blob、Queue、File 和 Table,其中的 Table 就是本文的主角 Azure Table storage。 Azure Table storage 是一个在云端存储结构化 NoSQL 数据的服务,它不仅存取速…

C# Azure 存储-Blob

1. 前言 本文是根据Azure文档与本人做了验证之后写的。 如果想下载微软官网的demo, 请前往github https://github.com/Azure-Samples/storage-blob-dotnet-getting-started 2. 介绍 Azure Blob是存储很大空间的服务,能允许存储与访问通过http或https。…

蜗牛星际ABCD款,这几款的区别你知道吗?

前言 本次文章有可能篇幅会超长,由于全部内容,可能导致万字长文,所以,本篇已经适当做了精简,只针对我目前拥有的蜗牛进行一些介绍,会附带一些教程链接。 每一个功能的实现,以后我都会单独写详…

蜗牛星际 --【功耗测量】

蜗牛星际b单千兆 正面 测量对象:蜗牛星际b单千兆 配置: j1900 16g 固态 4g ddr3l 内存 关机功耗 蜗牛星际待机功耗 蜗牛星际关机的情况下待机功耗为0.6w,一个月消耗不到两毛四分,一年不到三块钱。 开机功耗 未挂硬盘的情况下…

蜗牛星际:NAS从入门到放弃

预警1,蜗牛矿渣大批量上市是2019年3月的事情了。我写这个大概是2019年10月前后。我挑的最好的时候下手,C款全装只花了245包邮。现在由于市面上货量减少,价格上涨,已经没有原来那么高的性价比了。就连单卖的机箱也从原来的50包邮涨…

Dynamics 365 CRM 开发架构简介

目录 概览 名词解释连接到Dynamics 365 CRM Web APIOrganization service选择 - Web API vs. Organization service扩展服务端扩展应用端正文 Dynamics 365 CRM提供了多种编程模型,你可以灵活地按需选用最佳模式。 本文是对Dynamics 365 CRM编程模型的综述。 回…

Azure手把手系列 1:微软中国公有云概述

很久没有写文章了,主要也是疏于自己的懒惰,对于IT技术的放弃,但我相信浪子回头金不换,所以我又回来了。 相信现在还在泡博客的还在做IT的,或多或少都听过云、私有云及公有云的概念,那么今天给大家分享的是微…

Azure手把手系列 2:微软中国云服务介绍

在前面的文章中,我们已经了解到Azure有两种,分别是由微软直营的国际版,以及微软中国委托21世纪互联运营的国内版,两种Azure存在一定差异,并且数据不互通、帐号以及计费不统一。所以在选择微软公有云的时候也需要注意&a…

Azure手把手系列 3:把IT的钱花在刀刃上

对于Azure以及公有云的了解,可谓是永无止境的,用一句客户的话来说就是Azure是大海,只要你往前航行,一定能时不时的发现宝藏;Azure好比是一座冰山,当你以为你已经对Azure很熟悉了,其实这只是冰山…

Azure手把手系列 4:深入了解Azure 一块钱当三块用

通过前面的文章,相信大家对Azure有了一个基础的认识,接下来,我们再来看下作为企业,选择公有云服务最重要的因素之一 价格。我们都知道所谓公有云,就是要让IT资源变成我们生活中类似于水电气的资源,按需使用…

【Python CheckiO 题解】Feed Pigeons

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