日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

【Python CheckiO 题解】The Warriors

發(fā)布時(shí)間:2023/12/10 python 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Python CheckiO 题解】The Warriors 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

CheckiO 是面向初學(xué)者和高級(jí)程序員的編碼游戲,使用 Python 和 JavaScript 解決棘手的挑戰(zhàn)和有趣的任務(wù),從而提高你的編碼技能,本博客主要記錄自己用 Python 在闖關(guān)時(shí)的做題思路和實(shí)現(xiàn)代碼,同時(shí)也學(xué)習(xí)學(xué)習(xí)其他大神寫的代碼。

CheckiO 官網(wǎng):https://checkio.org/

我的 CheckiO 主頁(yè):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】:這個(gè)題目的故事大概就是說(shuō)有個(gè)車夫搶了個(gè)女孩,然后被一個(gè)爵士遇到了,爵士要救這個(gè)女孩,就要和車夫決斗,將爵士和車夫命名為 Warrior 和 Knight,兩者的生命值(50點(diǎn))相同但攻擊力不相同,Warrior 攻擊力為 5 點(diǎn),Knight 攻擊力為 7 點(diǎn),他們之間不斷來(lái)回攻擊,每一個(gè)回合,被攻擊者將減去相應(yīng)的生命值,戰(zhàn)斗以其中之一的死亡而告終。

我們需要?jiǎng)?chuàng)建一個(gè) Warrior 類,這個(gè)類將具有 2 個(gè)參數(shù):生命值(50點(diǎn))和攻擊力(5點(diǎn)),以及 1 個(gè)屬性:is_alive,如果戰(zhàn)士的生命值大于0,其值為 True,否則為 False。另外,還需要?jiǎng)?chuàng)建一個(gè) Knight 類,該類是 Warrior 的子類,其攻擊力參數(shù)為 7。此外,還必須創(chuàng)建一個(gè)函數(shù) fight(),該函數(shù)的功能是判斷誰(shuí)是最強(qiáng)的,誰(shuí)會(huì)活到最后。

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

【輸入】:兩個(gè)人物賦予不同的角色

【輸出】:決斗的結(jié)果以及判斷是否活著(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

解題思路

題目已經(jīng)告訴我們了,創(chuàng)建兩個(gè)類:Warrior 和 Knight,其中 Knight 是 Warrior 的子類,繼承其生命值的參數(shù)和是否活著的屬性,fight() 函數(shù)里面用于計(jì)算每次決斗兩者的剩余生命值,判斷其是否還活著。

代碼實(shí)現(xiàn)

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 創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的【Python CheckiO 题解】The Warriors的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。