Programmera med villkor

REPETITION

Förra veckan gick vi djupare vad gäller Strängar och gick igenom följande:

  • string – sträng-typ som är det som är texter
  • + och * beter sig annorlunda med strängar
  • konkatenering – när man slår ihop två eller flera strängar
  • typkonvertering – när man byter/begär en viss typ från en annan
  • input() – där användaren matar in värden i programmet
  • import math – biblioteke och dess färdiga funktioner, t.ex math.sqrt() för roten ur

Denna veckan ska vi se hur man kan få datorn att ta beslut, genom att definiera olika villkor som den testar.
För att definiera våra villkor denna vecka behöver vi även bekanta oss lite mer med den datatypen vi jobbat med minst så här långt i kursen, nämligen booleaner. Så, vad är en boolean egentligen?

 

BOOLEAN– EN DATATYP FÖR SANT ELLER FALSKT

Ytterliggare en datatyp, den kan ha två tillstånd: True eller False. Genom att använda s.k jämförelse operatorer kan man definiera olika uttryck/påstående som ger tillbaka en boolean.

print(3 > 2) , ger utskriften True
print(3 < 2) , ger utskriften False

Operatorer man kan använda med booleaner

Vi ser i exemplet ovan att vi använder andra typer av operatorer, många känner säkert igen dem också, men vi har ännu inte använts i våra program. Det finns sex stycken olika operatorer för detta:

  • >  större än
  • <  mindre än
  • >=  större eller lika med
  • <=  mindre eller lika med
  • != inte lika med
  • == lika med

 

IF-SATS: – OM VÅRT VILLKOR ÄR SANT KÖRS KODEN

if är ett villkor som exekverar kod efter att ha kontrollerat om villkoret är sant. Här är ett exempel på dess syntax:

if 8 < 9:
  print("Åtta är mindre än 9!")

I detta exempel är 8 < 9 det villkor som testas och print(“Åtta är mindre än nio!”) är koden som körs. Lägg märke till de kolon : som avslutar satsen samt indenteringen av koden som skall köras på raden under.

ELSE: – ANNARS GÖR DETTA

else kompletterar if. Ett if / else-par säger:  “Om(if) det här villkoret är sant, kör det här indenterade kodblocket, annars(else) kör den här andra delen av koden efter else istället.” Till skillnad från if, beror else inte på ett villkor. Det sker helt enkelt bara om alla ovanstående villkor inte varit sanna. Till exempel:

if 8 > 9:
  print("Åtta är större än 9!") #detta skrivs alltså aldrig ut
else:
print("Åtta är inte större än 9!")

ELIF: – TESTAR NÄSTA VILLKOR

elif är en förkortning av “annars om”(else if). Det betyder exakt vad det låter som: “annars, om följande villkor är sant, gör det här!”. Det är viktigt att tänka på att i en if-sats så kan man bara ha ett villkor som blir sant, när det villkor testas för sant kommer koden i det blocket att köras och sedan hoppar programmet ur den if-satsen. Därav kollas alltså inga fler villkor efter det.

Exempel:

if 8 > 9:
  print("Åtta är större än 9!") #detta skrivs alltså aldrig ut
elif 8 < 9:
print("Åtta är mindre än 9!") #detta kommer att skrivas ut, sedan är programmet klart
else:
print("Åtta är lika med 9!") #kommer aldrig hit, eftersom elif villkoret är sant

Ett till exempel:

if 8 > 9:
  print("Åtta är större än 9!") #detta skrivs alltså aldrig ut (falskt villkor)
elif 8 == 9:
print(Åtta är lika med 9!") #detta kommer inte att skrivas ut (falskt villkor)
else:
print("Jag skrivs ut!") #då alla villkor varit falska hamnar vi på else tillslut

Ytterliggare ett exempel:

if 8 != 9:
  print("Åtta är inte lika med 9!") #villkoret är sant, och texten skrivs ut
elif 8 < 9:
print(Åtta är mindre än 9!") #också sant men eftersom det första villkoret testades före så kommer vi aldrig hit
else:
  print("Jag skrivs inte ut!") #hit kommer vi aldrig

 

BOOLESK ALGEBRA– FÖR ATT BYGGA UT VÅRA VILLKOR

För att bygga ut sina villkor behöver man ytterliggar en uppsättning med operatorer, vi använder oss av boolesk algebra:

  • and , returnerar True om bägge villkoren är sanna
  • or , returnerar True om minst ett av villkoren är sanna
  • not , returnerar True för falska villkor och False för sanna

Booleska operatorer utvärderas inte bara från vänster till höger. Precis som med aritmetiska operatorer finns det regler för ordningen de beräknas:

not utvärderas först;
and utvärderas därefter;
or utvärderas sist.

Exempel:

True or not False and False. not utvärderas först, så vi får True or True and False.
Därefter är det and, så vi får True or False. Som vi sett tidigare, True or False är True, så det slutliga värdet som returneras är alltså True!

Förtydligande med parenteser:
True or ((not False) and False)
True or (True and False)
True or False
True

Tänk på att precis som i matematiken använder man parenteser för att ha kontroll över vad som skall beräknas först, från den innersta parentesen och utåt.
Det går även att blanda dessa när man skapar ett villkor:

If 3 < 4 or “Marcus” == “Niklas”:
  print(“Åtminstone en är sann vilket gör uttrycket sant”)

 

VECKANS ÖVNING – BETYGSKOLLEN

Denna veckan skall vi skriva ett program som räknar ut vårt betyg utifrån hur många poäng vi fått på ett prov.

  • 90 eller högre skall ge ett “A”
  • 80 – 89 skall ge ett “B”
  • 70 – 79 skall ge ett “C”
  • 65 – 69 skall ge ett “D”
  • 50 – 64 skall ge ett “E”
  • Allt under 50 skall ge ett “F”

SEE ALL Add a note
YOU
Add your Comment