Programmering nivå 2
Kap 1.4 – Villkor och logik i funktioner
Använd if/elif/else för att fatta beslut i funktioner.
Mål med lektionen
- Kunna använda if, elif och else i funktioner.
- Veta hur du strukturerar logik för att fatta beslut i kod.
- Kunna använda logiska uttryck med
and,orochnot. - Förstå hur kodflöde och returvärden fungerar i funktioner med villkor.
- Kunna skriva funktioner som tar beslut baserat på indata.
Så här lär du dig bäst
Gå igenom exemplen, skriv om dem och testa med olika indata. Fundera på ordningen i dina villkor och när en funktion ska returnera ett värde istället för att skriva ut något direkt.
Exempel – Kontrollera myndighet
def is_adult(age):
if age >= 18:
return True
else:
return False
user_age = int(input("Enter your age: "))
if is_adult(user_age):
print("You are an adult.")
else:
print("You are not an adult.")
Interaktiv övning: villkor i en funktion
Testa hur funktionen is_adult() returnerar True eller
False beroende på åldern. Kör med flera olika värden.
Prova till exempel att:
- skriva
17och se attelse-grenen körs - skriva
18och se attif-grenen körs - skriva text i stället för ett tal och se felmeddelandet
Programmering 2-koppling: funktionen returnerar ett värde, och huvudprogrammet använder värdet för att välja vilken utskrift som ska visas.
Flera alternativ med elif
def grade_feedback(grade):
if grade >= 90:
return "Excellent"
elif grade >= 75:
return "Good"
elif grade >= 60:
return "Pass"
else:
return "Fail"
# Exempel: fråga användaren om poäng och skriv ut feedback (utan undantagshantering)
score = int(input("Skriv in poäng (0-100): "))
print("Resultat:", grade_feedback(score))
Interaktiv övning: flera alternativ med elif
Testa hur programmet går igenom villkoren uppifrån och ned. Den första grenen som stämmer används, och resten hoppas över.
Prova till exempel att:
- skriva
95och fåExcellent - skriva
80och fåGood - skriva
65och fåPass - skriva
40och fåFail
Programmering 2-koppling: med elif kan en
funktion hantera flera möjliga resultat utan att skriva flera separata if-satser.
Logiska uttryck
Ibland räcker det inte att kontrollera ett enda villkor. Ett program kan behöva kontrollera flera saker samtidigt. Då använder man logiska operatorer.
De tre vanligaste logiska operatorerna i Python är and, or och
not.
and – båda villkoren måste vara sanna
and betyder att båda delarna måste vara True för att hela villkoret ska
vara sant.
age = int(input("Ålder: "))
has_ticket = input("Har biljett? (ja/nej): ")
if age >= 18 and has_ticket == "ja":
print("Du får gå in.")
else:
print("Du får inte gå in.")
Programmet skriver bara Du får gå in. om personen både är minst 18 år och har biljett.
or – minst ett villkor måste vara sant
or betyder att det räcker att ett av villkoren är True.
day = input("Vilken dag är det? ")
if day == "lördag" or day == "söndag":
print("Det är helg.")
else:
print("Det är vardag.")
Här blir villkoret sant om dagen är lördag eller söndag.
not – vänder på ett villkor
not betyder inte. Det vänder ett villkor från True till
False, eller från False till True.
logged_in = False
if not logged_in:
print("Du måste logga in.")
Eftersom logged_in är False blir not logged_in sant.
Exempel kopplat till kap 2.7
I bibliotekskatalogen används or för att söka i antingen titel eller författare:
if query in book["title"].lower() or query in book["author"].lower():
print("Boken matchar sökningen.")
Det betyder: om sökordet finns i titeln eller om sökordet finns i författaren, då räknas boken som en träff.
Du behöver inte förstå hela bibliotekskoden just nu. Poängen är att känna igen
att logiska operatorer som or kommer tillbaka senare i kursen.
Interaktiv övning: logiska uttryck
Testa skillnaden mellan and och or. Ändra ålder, biljett och operator
och se när villkoret blir sant.
Prova till exempel att:
- använda
andmed ålder18och biljettja - använda
andmed ålder17och biljettja - byta till
oroch jämföra resultatet
Programmering 2-koppling: logiska uttryck används när ett program behöver kombinera flera villkor, till exempel vid behörighet, sökning eller validering.
Fundera: Vilken operator, and eller
or, gör att programmet fungerar bäst i verkligheten om personen både måste vara
minst 18 år och ha biljett?
Öva själv
Samlad övning: inträde till evenemang
Skriv in koden i din editor och spara filen som kap1-4-event.py. Programmet
kontrollerar om en person får komma in på ett kvällsevenemang. Här tränar du på funktioner,
return, if, elif, else,
and, or och not i samma exempel.
def check_entry(age, has_ticket, has_parent, is_blocked):
# Skriv villkoren här.
# Funktionen ska returnera rätt meddelande.
pass
def main():
age = int(input("Ålder: "))
has_ticket = input("Har biljett? (ja/nej): ") == "ja"
has_parent = input("Har vårdnadshavare med? (ja/nej): ") == "ja"
is_blocked = input("Är personen avstängd? (ja/nej): ") == "ja"
message = check_entry(age, has_ticket, has_parent, is_blocked)
print(message)
main()
Programmet ska hantera
- Ogiltig ålder:
0eller negativa tal. - Avstängd person.
- Person utan biljett.
- Person som är minst 18 år och har biljett.
- Person som är under 18 år men har biljett och vårdnadshavare med.
- Person som är under 18 år, har biljett men saknar vårdnadshavare.
Testa programmet med
- Ålder
20, biljettja, vårdnadshavarenej, avstängdnej. - Ålder
16, biljettja, vårdnadshavareja, avstängdnej. - Ålder
16, biljettja, vårdnadshavarenej, avstängdnej. - Ålder
20, biljettnej, vårdnadshavarenej, avstängdnej. - Ålder
20, biljettja, vårdnadshavarenej, avstängdja. - Ålder
0eller-3.
Fundera: Var används and, or
och not? Varför ligger kontrollen för avstängd person före kontrollen för biljett?
När du har försökt själv kan du ladda ner ett lösningsförslag: kap1-4-event-losningsforslag.py
Reflektion
- Vad är skillnaden mellan att skriva `print()` och `return` i en funktion?
- Hur påverkar villkor flödet i ett program?
- Vad är skillnaden mellan
andochor? - Vad händer om du utelämnar `else` och inget villkor uppfylls?