VILLKOR - if elif else

Ibland vill vi att programmet bara ska utföra något om ett särskilt villkor är uppfyllt, t.ex. att om lönen överstiger ett visst belopp så ska en annan skattesats dras.

Kommandot if testar ett villkor. Om villkoret är sant (värdet = TRUE) så körs den kod som finns på raderna under och som är indragna.

if 'villkor som testas' :
     här är första raden kod som körs om villkoret är uppfyllt.
     här är andra raden kod som körs om villkoret är uppfyllt.
Här är kod som alltid körs (ej indragen)

OBS!!!_ För att göra indrag använder du alltid TAB-tangenten (pil med ett lodrätt streck bredvid). Använder du mellanslag så fungerar som regel inte programmet._

En villkors-rad avslutas med kolon ":" (se i fönstret till vänster). Om du trycker RETUR-tangenten efter kolon, gör programmet automatiskt ett indrag av nästa kommandorad.

Om villkoret inte är uppfyllt (värdet = FALSE) så hoppar programmet över de indragna raderna som ligger direkt under raden kod som testar villkoret.

Kommandona if - elif - else kan användas för att testa olika villkor. Dessa kommandon hänger ihop, kommandot if används alltid, de övriga används om fler tester behöver göras och de första testet med kommandot if har fått värdet FALSE.

Om något av testerna uppfylls, dvs får värdet TRUE, så struntar programmet i efterföljande tester, även om dessa också skulle ge värdet TRUE. if: Kan liknas vid vårt "om...".

elif: "I annat fall så...om" Används om vi gör fler än två jämförelser (man kan använda flera elifsatser efter varandra).

else: "I alla övriga fall så..." Indragna rader under detta kommando körs bara om inte if- och elif-villkoren är uppfyllda.

Kod att utgå från

pengar = 100
if pengar < 150:
  print("Du har inte råd med inträde till konserten.")
elif pengar < 200:
  print("Du är välkommen att köpa en inträdesbiljett.")
else:
  print("Vad mycket pengar du tagit med! Ska du köpa backstage-pass?")

Läs noga koden ovan och se till att du förstår den. Här följer en beskrivning av hur programmet fungerar rad för rad:

  1. Skapar en variabel som heter pengar och som har värdet 100.
  2. Testar om värdet på variabeln är mindre än 150. Vi vet att det stämmer eftersom 100 < 150, så därför kommer resultatet av denna rad kod vara TRUE. Notera ":" som står i slutet av raden.
  3. Denna rad (elif...) kommer inte att köras eftersom villkoret på raden ovanför var sant. Notera att koden är indragen.
  4. Denna rad (elif...) kommer inte att köras eftersom det första testet på rad 2 redan fått värdet TRUE. Så även om det stämmer att värdet på variabeln pengar < 200, så körs inte den indragna koden på rad 5.
  5. Körs inte (se punkt 4).
  6. Denna rad körs bara om de övriga testerna (rad 2 och 4) har värdet FALSE.

Öva 1

  1. Kör programmet. Kontrollera att texten under if-satsen skrivs ut.
  2. Ändra värdet på variabeln pengar så att textsträngen under elif skrivs ut. Kör programmet.
  3. Ändra värdet på variabeln pengar så att textsträngen under else skrivs ut. Kör programmet.

AVSLUTANDE UPPGIFT (lite svårare)

  1. Ge variabeln pengar värdet 200
  2. Ändra i koden så att biljettpriset är 300 kr. Notera att biljettpriset inte är utskrivet i koden, men priset påverkar om man har råd eller inte med biljetten.
  3. Testa bara två villkor - om man har råd eller inte.
  4. Text om man inte har råd: Du har inte råd med inträde, det saknas XXX kronor. XXX ersätts med korrekt belopp. Gör beräkning i printkommandots parentes för att kolla hur mycket det saknas).
  5. Text om man har råd: Du är välkommen att köpa en inträdesbiljett.

Facit

Avslutande uppgift