Presentationer Slide 1/1

Kap 1.4

Villkor och logik i funktioner

Vi låter funktioner fatta beslut med if, elif, else och logiska uttryck.

Mål

Efter lektionen ska du kunna...

  • använda if, elif och else i funktioner
  • skriva funktioner som returnerar beslut
  • använda and, or och not
  • förklara hur villkor påverkar kodens flöde

Repetition

Villkor väljer väg

if age >= 18:
    print("Myndig")
else:
    print("Inte myndig")

Programmet väljer gren beroende på om villkoret är sant eller falskt.

I kap 1.4 lägger vi den logiken inuti funktioner.

Helheten först

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.")

Funktionen

Beslutet ligger i funktionen

def is_adult(age):
    if age >= 18:
        return True
    else:
        return False

Funktionen tar emot en ålder och returnerar ett sanningsvärde.

Returvärde

return skickar tillbaka ett värde

return True betyder: ja, personen är myndig.

return False betyder: nej, personen är inte myndig.

Huvudprogrammet kan sedan använda svaret.

Huvudprogram

Använd funktionens svar

if is_adult(user_age):
    print("You are an adult.")
else:
    print("You are not an adult.")

Här används returvärdet som villkor.

Viktig skillnad

return och print()

  • return skickar ett värde tillbaka från funktionen
  • print() visar text för användaren
  • en funktion som returnerar värden är lättare att testa

Flera alternativ

elif testar nästa möjlighet

def grade_feedback(grade):
    if grade >= 90:
        return "Excellent"
    elif grade >= 75:
        return "Good"
    elif grade >= 60:
        return "Pass"
    else:
        return "Fail"

Ordning

Python läser uppifrån och ned

Först testas grade >= 90.

Om det är falskt testas grade >= 75.

Första grenen som stämmer körs.

Resten hoppas över.

Snabbtest

Vad returneras?

  • grade_feedback(95)"Excellent"
  • grade_feedback(80)"Good"
  • grade_feedback(65)"Pass"
  • grade_feedback(40)"Fail"

Logik

Ibland behövs flera villkor

Är personen minst 18 år?

Har personen biljett?

Är personen inloggad?

Då använder vi logiska operatorer.

Operator

and: båda måste stämma

if age >= 18 and has_ticket == "ja":
    print("Du får gå in.")
else:
    print("Du får inte gå in.")

Villkoret blir sant bara om båda delarna är sanna.

Operator

or: minst en måste stämma

if day == "lördag" or day == "söndag":
    print("Det är helg.")
else:
    print("Det är vardag.")

Villkoret blir sant om någon av delarna är sann.

Operator

not: vänder villkoret

logged_in = False

if not logged_in:
    print("Du måste logga in.")

not logged_in blir sant när logged_in är falskt.

Funktioner

Logik passar bra i funktioner

Funktionen får indata.

Funktionen testar villkor.

Funktionen returnerar ett resultat.

Huvudprogrammet använder resultatet.

Egen övning

Inträde till evenemang

Skapa funktionen check_entry().

Den ska ta emot ålder, biljett, vårdnadshavare och avstängning.

Den ska returnera rätt meddelande.

Startkod

Fyll i villkoren

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"

Testfall

Kontrollera flera vägar

  • 20 år, biljett, inte avstängd → får gå in
  • 16 år, biljett, vårdnadshavare → får gå in
  • 16 år, biljett, ingen vårdnadshavare → får inte gå in
  • 20 år, ingen biljett → får inte gå in
  • avstängd person → får inte gå in

Reflektion

Fundera

  • När ska en funktion använda return?
  • Varför spelar ordningen på villkoren roll?
  • När passar and bättre än or?
  • Vad händer om ingen gren matchar?

Sammanfattning

Kom ihåg

  • if/elif/else styr kodens väg.
  • return skickar tillbaka ett värde från funktionen.
  • and kräver att båda villkoren är sanna.
  • or kräver att minst ett villkor är sant.
  • not vänder på ett villkor.