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.
REPETITION
Förra veckan gick vi djupare vad gäller Strängar och gick igenom följande:
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:
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:
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årTrue 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.