Föreläsning 2
Hantering av vanliga datatyper, jämförelseuttryck , villkorssatser, och introduktion till felmeddelanden och debugging med spårutskrifter & tesfall
Dagens agenda
Kursnämndsrepresentanter
Jämförelseuttryck
Kapitel 2 i Möbius
Boolean – ett villkor som är sant eller falskt
tal < 23 # True om tal är mindre än 23, annars False
�sträng == "ja" # True om sträng innehåller värdet "ja"
�sträng < "ja" # True om värdet sträng kommer för "ja" alfabetiskt
En datatyp
Jämförelser
Symbol | Beskrivning | Returnerar |
< | Mindre än | True om det till vänster om < är mindre än det till höger, annars False |
<= | Mindre än eller lika med | True om det till vänster om <= är mindre eller lika med det till höger, annars False |
> | Större än | True om det till vänster om > är större än det till höger, annars False |
>= | Större än eller lika med | True om det till vänster om > är större än eller lika med det till höger, annars False |
== | Lika med | True om det till vänster om är lika med det till höger, annars False |
!= | Inte lika med | True om det till vänster om != inte är lika med det till höger, annars False |
Komihåg: ett likhetstecken används för att tillägna variabler värden!
Vilka av dessa skriver ut True?
Change background image
Logiska uttryck – undersöker två jämförelser
Symbol | Alternativ symbol | Returnerar |
and | & | True om båda jämförelserna är sanna annars False |
or | | | True om en eller båda jämförelserna är san/sanna, annars False |
tal = 7
husdjur = ”myrslok”
tal < 23 and husdjur > ”giraff”
True eller False?
If-satser
Change background image
If i vardagen
Om sen till bussen:
→ SPRING!
if sen_till_bussen == True:
print(”SPRING!”)
If i Python
Syntax
if villkor:
# Om villkoret är uppfyllt körs koden som är inskjuten under if-satsen
# Koden utanför if-satsen körs alltid!
Måste inte ens skriva villkor == True
If – else
antal_studenter = int(input("Hur många studenter är här? "))
if antal_studenter < 40:
print("Ni slipper sitta på golvet...")
else:
print(”Oj, oj… :O")
Notera att vi gör om inputen till ett heltal!
else fångar upp de fall som inte täcks av if!
If – elif – else
antal_studenter = int(input("Hur många studenter är här? "))
if antal_studenter < 40:
print("Ni slipper sitta på golvet...")
elif antal_studenter > 80:
print("Nu har vi besökare som inte är registrerade”)
else:
print(”Alla är inte här men ni får ändå sitta på golvet")
elif är en alternativ if-sats!
Python läser koden uppifrån och ner!
Vilken/vilka av dessa är sann(a)?
Change background image
While-slingor
Change background image
While i vardagen
Så länge det finns tänder kvar att borsta:
🡪 Fortsätt borsta tänderna!
smuttsiga_tänder = True
while smuttsiga_tänder == True:
print(”Fortsätt borsta tänderna!”)
While i Python
Syntax
while villkor == True:
# Så länge som villkoret är uppfyllt så körs koden som är inskjuten under while-slingan
# Koden utanför while-slingan körs alltid!
Vad kommer hända här?
while True:
print(”Nu är det dags att printa…")
Oändlig while-slinga
Change background image
Knep för att bryta oändliga slingor
while True:
print("Det här skrivs tills du skriver nej")
fortsätt = input("Vill du fortsätta? ")
if fortsätt == "nej":
break
break avbryter slingan när if-villkoret är uppfyllt
Vad ska stå istället för xxx?
Change background image
En meny – kombinera while & if
val = input("Vad vill du göra? Ange siffra 1-3: ")
while val != "3":
if val == "1":
print("Du valde 1.")
elif val == "2":
print("Du valde 2.")
else:
print("Du valde inte en siffra 1-3.")
val = input("Vad vill du göra ? Ange siffra 1-3: ")
print("Du valde 3. Hejdå!")
Vad händer om vi anger 5?
Vad händer om vi anger 2?
Svårt att jämföra flyttal → använd intervall
Här kommer vi få avrundningsfel så tal kommer inte att bli exakt 1.0 och slingan kommer bli oändlig
Här kommer slingan brytas när tal har ett värde som är nära 1.0 (högst 0.01 ifrån)
tal = 0.0
while abs(tal - 1.0) > 0.01:
print(tal)
tal += 0.1
tal = 0.0
while tal != 1.0:
print(tal)
tal += 0.1
Hantering av vanliga datatyper
Change background image
Datatyper
Sträng (eng. string), str, t.ex. ”hej”, ”17”, ”True”
Heltal (eng. integer), int, t.ex. -123, 54, 655
Flyttal (eng. float), float, t.ex. -3.141592, 43.567, 56.0
Boolean (eng. boolean), bool, t.ex. True, False
Operationer med strängar
Operator | Beskrivning | Exempel | Resultat |
+ | addition | "hej" + "då" | "hejdå" |
"2" + "3" | "23" | ||
* | multiplikation | "hej" * 3 | "hejhejhej" |
Print-utskrifter med + och ,
namn = ”Marga"
print("Hej", namn)
namn = ”Marga"
print("Hej" + namn)
namn = ”Marga"
ålder = 92
print(namn + " är " + ålder + " år gammal.")
namn = ”Marga"
ålder = 92
print(namn, "är", ålder, " år gammal.")
Hur kommer utskriften se ut?
Kan vi blanda datatyper?
Några vanliga sträng-metoder
Metod | Beskrivning | Exempel | Resultat |
capitalize() | Konverterar alla små bokstäver till stora | “hej”.capitalize() | “HEJ” |
isnumeric() | Ger True om alla tecken i strängen är siffror | ”01112023” | True |
lower() | Konverterar alla stora bokstäver till små | ”Hej”.lower() | ”hej” |
replace() | Byter ut en delsträng mot en annan | hälsning = ”god morgon” hälsning.replace(”morgon”, ”kväll”) | ”god kväll” |
strip() | Tar bort alla tomma tecken i början och slutet av strängen | ” dumt med tomma tecken ”.strip() | ”dumt med tomma tecken” |
Operationer med heltal
Operator | Beskrivning | Exempel | Resultat |
+ | addition | 3 + 4 | 7 |
- | subtraktion | 3 - 4 | -1 |
* | multiplikation | 3 * 4 | 12 |
** | upphöjt | 3**4 | 81 |
/ | division | 30/4 | 7.5 |
// | heltalsdivision | 30//4 | 7 |
% | modulo | 30%4 | 2 |
Operationer med flyttal
Operator | Beskrivning | Exempel | Resultat |
+ | addition | 3.4 + 4.3 | 7.7 |
- | subtraktion | 3.4 - 4.3 | -0.9 |
* | multiplikation | 3.4 * 4.3 | 14.62 |
** | upphöjt | 3.2**2 | 10.240000000000002 |
/ | division | 30/4 | 7.5 |
Heltal kan vara lite opålitliga…
Felmeddelanden
Tre vanliga felmeddelanden
Felmeddelande | Beskrivning | Exempel |
SyntaxError | Du har inte följt Pythons regler/syntax. | print("hej) |
NameError | Du använder ett ord som du inte definierat. | prin(7 + 3) |
TypeError | Du försöker utföra en operation som inte kan utföras med den data du använder. | universitet = "KTH" print(universitet/2) |
Hur kan vi fixa felen?
Känner ni igen felen?
Att läsa felmeddelanden
Steg 1: Kolla vad det är för fel
Felmeddelanden läses nedifrån och upp
Steg 2: Kolla varför det uppstod
Steg 3: Kolla var det uppstod
Debugging med testfall och spårutskrifter
Det blir inte alltid som man tänkt sig…
Change background image
Testfall
Testfall anger:
Exempel:
Indata: 5
Förväntat resultat: "Fakultet för 5 är lika med 120"
tal
svar
Spårutskrifter
Vad händer med variablerna när vi kör programmet
- jämför med det vi förväntar oss – testfallet!
Spårutskrifter är print-satser
som vi lägger in i programmet för att se vad för data variablerna innehåller vid olika tillfällen (rader) i programmet
Kursnämndsrepresentanter
Labb 0
Introduktion
Deadline: imrogon
Change background image