Fejlett Python fejlesztési tanfolyam
Fejezet
>
Szint
Matematikai modulok
Matematika Modul Bevezető
Célkitűzés
Vizsgáld meg a birtokok okiratait és az ingatlan határvonalait a farmon, ellenőrizd és dolgozd fel a számadatokat a Math Modul függvényeinek használatával.
Az irodában, a főépület legszélső részén található egy archívum, amely régi építési terveket és birtokok okiratait tartalmazza. A tervek szerint a farmot keleten bővítik, de fontos, hogy minden papírmunkát rendezve legyen, mielőtt bármilyen építési tervet megvizsgálsz. Ezt a python math modul segítségével végezzük el.
import math
Ahogy az azt megelőző statisztikai modul is, a math modul egy sor matematikai függvényt tartalmaz, amellyel kibővíthetjük a python beépített könyvtárát:
-
math.isnan(): Ellenőrzi, hogy a bevitt érték nem szám-e -
math.isinf(): Ellenőrzi, hogy a bevitt érték végtelen szám-e -
math.isfinite(): Ellenőrzi, hogy a bevitt érték véges-e -
math.prod(): Összeszorozza az összes megadott argumentumot -
math.pow(): Két argumentumot fogad, és visszaadja az első argumentum értékét a második argumentum hatványán -
math.trunc(): Levágja a megadott érték tizedes részét, így a lebegőpontos számot egésszé alakítja. (Nem kerekít, csak eltávolítja) -
math.copysign(): Két argumentumot fogad, lemásolja a második argumentumból az előjelet (-,+) és alkalmazza az elsőre -
math.factorial(): Egy argumentumot fogad, és megszorozza a számot a 1-ig visszafelé haladva. Például, ha az érték5, akkor:5x4x3x2x1, és így adja meg az eredményt.
Ezeket a függvényeket fogjuk használni, hogy átnézzük és rögzítsük az adatokat a fejlesztési projektek előkészítése érdekében. Három listakonstans tartalmazza a farm térképeit, amelyek a következők: red_schematics, green_schematics, blue_schematics. Ezeken a tervrajzokon nem numerikus és használhatatlan értékek szerepelnek, ezért használd a math függvényeket az elemek azonosításához, és keresd meg a használható adatokat, hogy azt rögzíthessük.
Először sétálj a sötét X jelhez a piros szőnyegen, és használj egy ciklust a red_schematics lista elemeinek végigiterálására, hogy azonosítsd a használható elemeket.
for x in red_schematics: y = math.isnan (float(x)) if y == True: player.speak("Not a Number") else: y = math.isinf(float(x)) if y == True: player.speak("Is infinite") else: player.speak(x)
A ciklus végigmegy a lista minden elemén; a math.isnan() függvény azonosítja a nem numerikus bejegyzéseket, míg a math.isinf() azokat a végtelen értékeket, amelyeket nem lehet felhasználni az adatgyűjtés céljából. Hozz létre egy új listát red_values néven, és használj list comprehension-t a nem kívánt elemek eltávolítására a math.isfinite() segítségével, így: red_values = [x for x in red_schematics if math.isfinite(float(x))] .
Ezután add össze az értékeket a math.prod() függvénnyel, amely a lista összes elemét összeszorozza, így: red_values = math.prod(red_values) .
Ugyanezt a szűrési folyamatot végezd el a zöld és kék szőnyegeken található sötét X jelű helyeken is, a green_schematics és blue_schematics listakonstansokat használva, és egyesítsd az elemeket green_values illetve blue_values listákba. Sétálj az arany X jelhez, fordulj a pulthoz, és használd a szerkesztőben előre megírt write() függvényt a használható tervrajzadatumok rögzítéséhez. Miután mindent összeraktál, sétálj a világos X jelhez, és használd az open() függvényt a következő szoba eléréséhez.
Amikor belépsz a következő szobába, néhány pultnál birtokok okiratai és koordináták találhatók. Jó ötlet, hogy rögzíts néhány adatot, mielőtt áttérnél a farm új kiegészítéseinek ellenőrzésére a híd túloldalán lévő következő területen. Sétálj a világos X jelhez az első pult melletti, térképekkel teli láda előtt, és használd a read() függvényt a birtokok okirataihoz tartozó indexadatok megszerzéséhez.
Sétálj a sötét X jelhez a lila szőnyegen, hozz létre egy purple_data nevű változót, és használd a math.pow() függvényt az eddig megszerzett adatok koordináta információvá alakításához. Emeld az indexet a 3 hatványára, így: purple_data = math.pow( -index data- , 3 ), ügyelve rá, hogy hozzáadd az előzőleg beolvasott indexadatot. Használd a math.trunc() függvényt a változó tizedesrészének eltávolításához, így: purple_data = math.trunc(purple_data). Ha elkészültél, a megadott X jel mellett használd az előre megírt write() függvényt a purple_data érték rögzítéséhez.
A végső lépésként sétálj a világos X jelhez a legfelső pult melletti iratrendező szekrény előtt. Használd újra a read() függvényt az indexadatok megszerzéséhez, ugyanis ezeknek az adatoknak ki kell bontaniuk a további koordináta információkat a földdel kapcsolatban. Hozz létre egy white_data nevű változót a fájlban talált adatérték tárolására, valamint egy sign nevű változót az ott talált előjel számára. Sétálj a sötét X jelhez a fehér szőnyegen, és használd a math.copysign() függvényt a két létrehozott változó argumentumként történő átadásával, majd rendeld az eredményt a white_data változóhoz, így: white_data = math.copysign(white_data,sign).
Ha elkészültél, a white_data értékkel használd a math.factorial() függvényt az index megszorozására; konvertáld a white_data-t egész számmá, és használd azt a függvénnyel, így: white_data = math.factorial(int(white_data)). Végül használd az előre megírt write() függvényt a white_data rögzítéséhez annak érdekében, hogy befejezd a szintet.