Avansert Pythonutviklingskurs
Kapittel
>
Nivå
Matematiske moduler
Introduksjon til matematikkmodulen
Mål
Sjekk tinglysninger og eiendomsgrenser på gården, verifiser og beregn tallene ved å bruke funksjoner fra Math-modulen.
På kontoret helt i enden av hovedbygningen finnes et arkiv med gamle blåkopier over bygningen og tinglysninger. Det er planer om å utvide gården mot øst, men det er viktig å få orden på alt papirarbeidet før du bestemmer deg for å se på noen byggeplaner. Dette vil bli gjort ved å bruke pythons math-modul.
import math
Akkurat som statistikkmodulen før, har math-modulen en samling matematiske funksjoner vi kan bruke for å utvide pythons innebygde bibliotek:
-
math.isnan(): Sjekker om den oppgitte verdien ikke er et tall -
math.isinf(): Sjekker om den oppgitte verdien er uendelig -
math.isfinite(): Sjekker om den oppgitte verdien er endelig -
math.prod(): Multipliserer alle argumentene som oppgis -
math.pow(): Tar to argumenter og returnerer den første argumentet opphøyd i den andre argumentets potens. -
math.trunc(): Kutter av desimaldelen fra et flyttall, slik at det blir et helt tall. (Runder ikke, bare fjerner desimalene) -
math.copysign(): Tar to argumenter, kopierer fortegnet (- eller +) fra det andre argumentet og påfører det på det første. -
math.factorial(): Tar et argument og multipliserer tallet med alle tall ned til 1. For eksempel, hvis verdien er5, blir det:5x4x3x2x1som gir et resultat.
Vi skal bruke disse funksjonene for å gjennomgå og kartlegge data for å forberede utviklingsprosjektene. Det finnes tre listekonstanter med skjemaer for jordbruksområdet kalt: red_schematics, green_schematics, blue_schematics. Disse skjemaene har ikke-numeriske og ubrukelige verdier skrevet ned. Bruk matematiske funksjoner for å identifisere elementene og finne de brukbare dataene slik at vi kan kartlegge dem.
Først, gå til det mørke X-merket over den røde løperen, og bruk en løkke for å gå gjennom elementene i listekonstanten red_schematics for å identifisere brukbare elementer.
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)
Løkken vil gå gjennom alle elementene i listen. Funksjonen math.isnan() identifiserer ikke-numeriske oppføringer, mens math.isinf() identifiserer uendelige verdier som ikke kan brukes til datainnsamling. Opprett en ny liste kalt red_values og bruk en listeforståelse for å fjerne de uønskede elementene ved å benytte math.isfinite() for filtrering, slik:
red_values = [x for x in red_schematics if math.isfinite(float(x))].
Legg deretter sammen alle tallene ved å bruke funksjonen math.prod() for å multiplisere alle elementene i listen, slik:
red_values = math.prod(red_values).
Utfør den samme filtreringsprosess på de mørke X-merkene over den grønne og blå løperen, ved å bruke listekonstantene green_schematics og blue_schematics og samle elementene i lister kalt green_values og blue_values. Gå til det gullfargede X-merket, vend deg mot pulten og bruk funksjonen write() som er forhåndsskrevet i editoren for å kartlegge de brukbare skjema-dataene. Når du har samlet alt, gå til det lyse X-merket og bruk funksjonen open() for å få tilgang til neste rom.
Når du er i neste rom, finner du et par pulter med noen tinglysninger og koordinater. Det er en god idé å kartlegge data før du går videre til å sjekke de nye tilskuddene til gården i området på andre siden av broen. Gå til det lyse X-merket foran kisten med kart ved den første pulten, og bruk funksjonen read() for å skaffe indeksdata for tinglysningene.
Gå til det mørke X-merket over den lilla løperen, opprett en variabel kalt purple_data og bruk funksjonen math.pow() for å multiplisere dataene du har skaffet for å få koordinatinformasjon. Hev indeksen til potensen 3, slik som:
purple_data = math.pow( -index data- , 3 ),
hvor du husker å legge til indeksdataen du leste tidligere. Bruk math.trunc() for å fjerne desimalene fra variabelen, slik:
purple_data = math.trunc(purple_data).
Når du er ferdig, bruk funksjonen write() (forhåndsskrevet i editoren) med purple_data for å kartlegge dataene lagret i variabelen.
For å avslutte, gå til det lyse X-merket foran arkivskapet ved siden av den øverste pulten. Bruk funksjonen read() for å hente indeksdata en gang til; disse dataene må pakkes ut for å avsløre mer koordinatinformasjon om eiendommen. Opprett en variabel kalt white_data for å lagre dataverdien som finnes i filen, og en variabel kalt sign for å lagre fortegnet som finnes i filen. Gå til det mørke X-merket over den hvite løperen og bruk funksjonen math.copysign() med de to variablene du opprettet som argumenter, og tilordne verdien til white_data, slik:
white_data = math.copysign(white_data,sign).
Når du er ferdig, bruk math.factorial() med white_data for å multiplisere indeksen. Konverter white_data til et heltall og bruk det med funksjonen, slik:
white_data = math.factorial(int(white_data)).
Bruk den forhåndsskrevede funksjonen write() for å kartlegge white_data og dermed fullføre nivået.