Gå till innehållet

Logiska operatorer (Python)

I Python kombinerar du villkor med and, or, och not. Det är som att säga “och”, “eller”, “inte”.

Mål för denna sida

  • Känna till and, or, not
  • Kunna skriva flera val med if/elif/else och match
Python
veckodag = "lördag"
vecka = 41

# Båda måste stämma
if veckodag == "lördag" and vecka == 41:
    print("Ja, det stämmer")

# Minst ett räcker
if veckodag == "lördag" or vecka == 20:
    print("Helg eller vecka 20")

Flera val

Med många grenar, använd if/elif/else. I Python 3.10+ finns också match:

Python
1
2
3
4
5
6
7
8
dag = input("Dag? ").lower()
match dag:
    case "lördag":
        print("Lugn dag")
    case "söndag":
        print("Vilodag")
    case _:
        print("Vardag")

Uppgifter

1) Fråga efter användarnamn och lösenord. Om båda stämmer, skriv “Du är inloggad”, annars “Fel uppgifter”.

2) Berg-och-dalbana: längd i meter (float). Får åka om 1.4 <= längd <= 1.9.

3) Kaffekampanj: rabatt om ålder > 65 eller 12 <= ålder <= 18. Endast en if-sats.

4) Tävling: delta om 16 <= ålder <= 19. Skriv också om personen är för ung eller för gammal.

5) Lånekalkylator: läs löptid (1/3/5 år), belopp och ränta (%). Räkna total kostnad med ränta-på-ränta och skriv kostnaden.

6) VM 1994-fråga: läs land, jämför skiftlägesokänsligt. Skriv rätt/fel.

7) Betyg från poäng (E=15, D=25, C=35, B=45, A=55). Läs poäng och skriv betyg.

8) Medalj efter plats 1/2/3/annat. Använd if-elif-else eller match.

9) Jobb: fråga om gått ut gymnasiet (j/n) och ålder. Om j och ålder < 22: “Vi vill gärna anställa dig”, annars “Tyvärr…”. Endast en if-sats.


Små steg – kombinera villkor

1) Skriv ut “Du får rabatt” om ålder < 12 or ålder >= 65. 2) Skriv ut “Mellan 10 och 20” om 10 <= tal <= 20. 3) Negation: om not godkänd, skriv “Gör om provet”.

Python
1
2
3
ålder = int(input("Ålder: "))
if ålder < 12 or ålder >= 65:
    print("Du får rabatt")

Mini-projekt: Mini-quiz med poäng

Tre ja/nej-frågor. Räkna poäng; 2 eller fler rätt = “Bra jobbat!”. Använd .lower() och kontrollera giltigt svar.

Utmaning: Lägg till en fråga med flera alternativ (A/B/C) och bedömning.

Hitta felen! (5 fel)

Koden ska säga om ett tal ligger mellan 10 och 20 eller om personen får rabatt. Rätta fem fel.

Python
ålder = int(input("Ålder: "))
tal = int(input("Tal: "))

if tal > 10 and tal < 20 or ålder < 12 or ålder >= 65:
    print("Mellan 10 och 20 eller rabatt")
elif not ålder < 12 or ålder >= 65:
    print("Ingen rabatt")
elif 10 <= tal <= 20 and False:
    print("Alltid falskt")
if ålder = 18:
    print("Exakt 18")
else:
    print("Klart")

Facit

Python
ålder = int(input("Ålder: "))
tal = int(input("Tal: "))

# Fix 1: Sätt tydliga parenteser för prioritet mellan tal-intervallet och rabattvillkoren
if (10 < tal < 20) or (ålder < 12 or ålder >= 65):
    print("Mellan 10 och 20 eller rabatt")
else:
    print("Inte i intervallet och ingen rabatt")

# Fix 2: Korrekt negation för "ingen rabatt"
if not (ålder < 12 or ålder >= 65):
    print("Ingen rabatt")
else:
    print("Har rabatt")

# Fix 3: Ta bort döda villkor (and False)
if 10 <= tal <= 20:
    print("Talet ligger i intervallet 10..20")

# Fix 4: Använd == för jämförelse, inte =
if ålder == 18:
    print("Exakt 18")

# Fix 5: Koppla else till sitt if (ovan), undvik flytande else utan par
print("Klart")