Vi går vidare med vår träningsapp nu. I föregående del Python programmering och datastrukturer del 1
presenterade vi en träningsapp som exempel att utgå ifrån.
Var det något som var svårt där? Hör av dig gärna! Kontakt
Vi har lagt grunden och det är dags att introducera ett nytt koncept som kommer ge oss ännu mer kontroll i vårt program: villkorssatser, eller if-satser som de kallas.
Med hjälp av villkor kan vi anpassa programmets logik baserat på hur användaren väljer att interagera med programmet.
Villkor med if
-satser
Med en if
-sats kan vi styra vad som ska hända beroende på värdet i en variabel. Om du till exempel vill visa alla övningar när användaren svarar ”Ja”, och skriva ett annat meddelande om användaren svarar ”Nej”, kan du använda en if
-sats.
Prova följande kod i ett nytt skript, som vi kallar workout_v2.py
:
vecka = 1 schema = 'Workout A' exercises = ('Bench press', 'Deadlift', 'Squat', 'Biceps curl') svar = input('Vill du se alla övningar i träningsschemat? (Ja/Nej) ') if svar == 'Ja': print('Här är alla övningar:') # mer kod här ... elif svar == 'Nej': print('Okej, vi visar inga övningar just nu.') else: print('Ogiltigt svar, skriv "Ja" eller "Nej".')
Vad händer i koden?
Detta är en if-sats med tre grenar kan man säga.
- Villkorsuttryck med
if
: Om användaren skriver ”Ja” körs koden i blocket efterif
. - Alternativ med
elif
: Om användaren skriver ”Nej” visas ett annat meddelande. - Ogiltigt svar: Om svaret är något annat än ”Ja” eller ”Nej”, visar programmet ett meddelande som förklarar att endast dessa svar är giltiga.
Kör koden och prova att skriva ”Ja”, ”Nej” och ett ogiltigt svar (som ”Kanske”) för att se vad som händer. Du märker nu att programmet blir mer interaktivt och anpassar sig efter användarens svar.
Vi har inte ett fullständigt kodblock för ”Ja”, men det är något vi ska lösa på ett smart sätt genom att använda oss av loopar.
Loopa genom övningarna med for
Kom ihåg att variabeln exercises
är en tuple, det är en typ av lista som också kan skrivas ut för användaren. Prova att bara skriva print(exercises)
Vi kan även använda en for
-loop för att iterera genom varje övning i listan och göra något med den. En for
-loop i Python är ett kraftfullt verktyg för att upprepa instruktioner flera gånger – perfekt för listor och andra upprepade element.
När vi skriver for
följt av en variabel och ett in
-uttryck, säger vi åt programmet att loopa igenom varje element i en datastruktur (som en lista eller tuple) och utföra koden i loopen för varje enskilt element.
Här är ett exempel som visar hur vi kan använda en for
-loop för att skriva ut varje övning:
for ovning in exercises: print(ovning)
I detta exempel:
- Startar loopen:
for ovning in exercises
innebär att Python börjar gå igenom varje element iexercises
. - Tilldelning av
ovning
: För varje iteration (varv) i loopen blirovning
namnet på en övning i tur och ordning, från ’Bench press’ till ’Biceps curl’. - Utför instruktioner: Koden i loopen,
print(ovning)
, körs varje gång loopen upprepas. Så varje övning skrivs ut på en egen rad.
Hur många varv kör loopen? Antal element i listan bestämmer, för det är syftet med en for
att gå igenom alla elementen i listan. Svaret är len(exercises)
, prova att skriva ut det.
Med for
-loopar kan vi effektivt arbeta med samlingar av data och göra programmet mer flexibelt. Prova gärna att lägga till egna instruktioner i loopen för att experimentera med hur du kan hantera varje enskilt element i en lista.
Detta diagram visar vad som händer
if svar == 'Ja': print('Här är alla övningar:') for ovning in exercises: print(ovning) elif svar == 'Nej': print('Okej, vi visar inga övningar just nu.') else: print('Ogiltigt svar, skriv "Ja" eller "Nej".')
Lägg till ett val för mer information om en specifik övning
Låt oss utöka programmet så att användaren kan välja en övning och få mer information. För enkelhets skull kommer vi bara att skriva ut ett generiskt meddelande för varje övning. Lägg till följande efter koden ovan:
ovning_val = input('Vilken övning vill du veta mer om? ') if ovning_val in exercises: print(f'Du valde {övning_val}. Detta är en grundläggande övning för styrka.') else: print('Den övningen finns inte i schemat.')
Här använder vi in
för att kontrollera om övningen som användaren skrev in finns i exercises
. Om den gör det, visar vi information om övningen, annars informerar vi användaren att övningen inte finns i schemat.
Övning
- Lägg till fler övningar: För att göra appen lite mer användbar kan du lägga till fler övningar till
exercises
-tuple:n. - Utveckla övningsinformationen: Istället för ett generiskt meddelande kan du skapa olika meddelanden för varje övning. Du kan skriva if-satser inom en if-sats.
- I nästa del kommer vi använda dictionary som lagrar beskrivningar för varje övning på ett snyggare sätt.
Summering
I denna del har du lärt dig att använda if
-satser för att göra ditt program mer interaktivt. Att kunna skapa olika alternativ och vägval i programmet är en viktig del av programmering. Det gör dina program mer dynamiska och anpassade för användaren.
I nästa del kommer vi att dyka djupare in i hur vi kan arbeta med loopar och titta på dictionary.