Avancerad Pythonutvecklingskurs
Kapitel
>
Nivå
Matematikmoduler
Introduktion till matematikmodulen
Mål
Kontrollera fastighetsbrev och gränser på gården, verifiera och räkna siffror med hjälp av Math Module-funktioner.
På kontoret längst ut vid huvudbyggnadens kant finns ett arkiv med gamla ritningar för byggnaden och fastighetsbrev. Det finns planer på att utvidga gården österut men det är viktigt att få alla dokument i ordning innan du bestämmer dig för att titta på några byggnadsplaner. Detta kommer att göras med hjälp av pythons math module.
import math
Liksom statistikmodulen, har math-modulen en samling matematiska funktioner vi kan använda för att utöka pythons inbyggda bibliotek:
-
math.isnan(): Kontrollerar om inskickat värde inte är ett tal -
math.isinf(): Kontrollerar om inskickat värde är ett oändligt tal -
math.isfinite(): Kontrollerar om inskickat värde är ändligt -
math.prod(): Multiplicerar alla tillagda argument -
math.pow(): Tar två argument och returnerar värdet av det första argumentet upphöjt till det andra argumentets potens. -
math.trunc(): Trunkerar det angivna argumentet, detta tar bort decimaldelen från ett flyttal och gör det till ett heltal. (Avrundar inte, bara tar bort) -
math.copysign(): Tar två argument, kopierar tecknet (-,+) från det andra argumentet och applicerar det på det första. -
math.factorial(): Tar ett argument och multiplicerar det med alla tal ned till 1. Till exempel, om värdet är5blir det:5x4x3x2x1och ger ett resultat.
Vi kommer att använda dessa funktioner för att granska och dokumentera data för att förbereda utvecklingsprojekten. Det finns tre lista-konstanter som innehåller ritningar för jordbruksmarken med namnen: red_schematics, green_schematics, blue_schematics. Dessa ritningar innehåller icke-numeriska och oanvändbara värden, använd matematikfunktionerna för att identifiera elementen, hitta den användbara datan så att vi kan dokumentera den.
Först, gå till den mörka X-markeringen över den röda mattan och använd en loop för att gå igenom elementen i lista-konstanten red_schematics för att identifiera användbara element.
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)
Loopen kommer att gå igenom alla element i listan, math.isnan()-funktionen identifierar icke-numeriska poster, medan math.isinf() identifierar oändliga värden som inte kan användas för datainsamling. Skapa en ny lista med namnet red_values och använd en list comprehension för att ta bort de oönskade elementen genom att använda math.isfinite() som filter, på följande sätt: red_values = [x for x in red_schematics if math.isfinite(float(x))].
Lägg sedan ihop siffrorna genom att använda math.prod()-funktionen för att multiplicera alla objekt i listan, på följande vis: red_values = math.prod(red_values).
Gör samma filtreringsprocess vid de mörka X-markeringarna över den gröna och blå mattan, använd lista-konstanterna green_schematics och blue_schematics och konsolidera elementen i listor med namnen green_values och blue_values. Gå till den gyllene X-markeringen, vänd dig mot skrivbordet och använd write()-funktionen som redan finns i editorn för att dokumentera den användbara ritningsdatan. När du har slagit samman allt, gå till den ljusa X-markeringen och använd open()-funktionen för att ta dig in i nästa rum.
Väl inne i nästa rum finns det ett par skrivbord med några fastighetsbrev och koordinater. Det är en bra idé att dokumentera viss data innan du går vidare med att kontrollera de nya tilläggen till gården i nästa område över bron. Gå till den ljusa X-markeringen framför lådan med kartor vid det första skrivbordet, använd read()-funktionen för att hämta indexdata för fastighetsbreven.
Gå till den mörka X-markeringen över den lila mattan, skapa en variabel med namnet purple_data och använd math.pow()-funktionen för att multiplicera den data du har hämtat för att få koordinatinformation. Ha indexet upphöjt till 3, på följande sätt: purple_data = math.pow( -index data- , 3 ), se till att lägga till den indexdata du läste tidigare. Använd math.trunc() för att ta bort decimaldelarna från variabeln, på följande sätt: purple_data = math.trunc(purple_data). När detta är klart, vid X-markeringen, använd den förskrivna write()-funktionen i editorn med purple_data för att dokumentera datan som lagras i variabeln.
För att avsluta, gå till den ljusa X-markeringen framför arkivskåpet intill det övre skrivbordet. Använd read()-funktionen för att hämta indexdata igen, denna data måste avkodas för att avslöja ytterligare koordinatinformation för marken. Skapa en variabel med namnet white_data för att lagra värdet från filen och en variabel med namnet sign för att lagra tecknet som finns i filen. Gå till den mörka X-markeringen över den vita mattan och använd math.copysign()-funktionen med de två variabler du skapade som argument och tilldela värdet till white_data, på följande sätt: white_data = math.copysign(white_data,sign).
När detta är klart, använd white_data med math.factorial() för att multiplicera indexet, omvandla white_data till ett heltal och använd det med funktionen, på följande sätt: white_data = math.factorial(int(white_data)). Använd den förskrivna write()-funktionen för att dokumentera white_data och därmed slutföra nivån.