1 of 35

Föreläsning 2

Hantering av vanliga datatyper, jämförelseuttryck , villkorssatser, och introduktion till felmeddelanden och debugging med spårutskrifter & tesfall

2 of 35

Dagens agenda

  1. Jämförelseuttryck & logik
  2. Villkorssatser (if)
  3. While-slingor
  4. Hantering av vanliga datatyper
  5. Felmeddelanden
  6. Debugging med testfall & spårutskrifter

3 of 35

Kursnämndsrepresentanter

  • 1- 2 studenter som kan tänka sig att vara kursnämndsrepresentanter.
  • Normalt 3 möten (början, mitten och slutet av kursen).

4 of 35

Jämförelseuttryck

Kapitel 2 i Möbius

5 of 35

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

6 of 35

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!

7 of 35

Vilka av dessa skriver ut True?

Change background image

  1. Select Design > Format Background.
  2. In the Format Background pane, select Picture or texture fill.
  3. Select File.
  4. In the Insert Picture dialog box, choose the picture you want to use and then select Insert.

8 of 35

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?

9 of 35

If-satser

Change background image

  1. Select Design > Format Background.
  2. In the Format Background pane, select Picture or texture fill.
  3. Select File.
  4. In the Insert Picture dialog box, choose the picture you want to use and then select Insert.

10 of 35

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

11 of 35

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!

12 of 35

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!

13 of 35

Vilken/vilka av dessa är sann(a)?

Change background image

  • Select Design > Format Background.
  • In the Format Background pane, select Picture or texture fill.
  • Select File.
  • In the Insert Picture dialog box, choose the picture you want to use and then select Insert.

14 of 35

While-slingor

Change background image

  • Select Design > Format Background.
  • In the Format Background pane, select Picture or texture fill.
  • Select File.
  • In the Insert Picture dialog box, choose the picture you want to use and then select Insert.

15 of 35

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!

16 of 35

Vad kommer hända här?

while True:

print(”Nu är det dags att printa…")

Oändlig while-slinga

Change background image

  • Select Design > Format Background.
  • In the Format Background pane, select Picture or texture fill.
  • Select File.
  • In the Insert Picture dialog box, choose the picture you want to use and then select Insert.

17 of 35

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

18 of 35

Vad ska stå istället för xxx?

Change background image

  • Select Design > Format Background.
  • In the Format Background pane, select Picture or texture fill.
  • Select File.
  • In the Insert Picture dialog box, choose the picture you want to use and then select Insert.

19 of 35

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?

20 of 35

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

21 of 35

Hantering av vanliga datatyper

Change background image

  • Select Design > Format Background.
  • In the Format Background pane, select Picture or texture fill.
  • Select File.
  • In the Insert Picture dialog box, choose the picture you want to use and then select Insert.

22 of 35

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

23 of 35

Operationer med strängar

Operator

Beskrivning

Exempel

Resultat

+

addition 

"hej" + "då"

"hejdå"

"2" + "3"

"23"

*

multiplikation

"hej" * 3

"hejhejhej"

24 of 35

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?

25 of 35

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”

26 of 35

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

27 of 35

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…

28 of 35

Felmeddelanden

29 of 35

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?

30 of 35

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

31 of 35

Debugging med testfall och spårutskrifter

Det blir inte alltid som man tänkt sig…

Change background image

  • Select Design > Format Background.
  • In the Format Background pane, select Picture or texture fill.
  • Select File.
  • In the Insert Picture dialog box, choose the picture you want to use and then select Insert.

32 of 35

Testfall

Testfall anger:

  • Indata
  • Förväntad utdata/resultat

Exempel:

Indata: 5

Förväntat resultat: "Fakultet för 5 är lika med 120"

tal

svar

33 of 35

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

34 of 35

Kursnämndsrepresentanter

  • 1-2 studenter som kan tänka sig att vara kursnämndsrepresentanter.
  • Normalt 3 möten (början, mitten och slutet av kursen).

35 of 35

Labb 0

Introduktion

Deadline: imrogon

Change background image

  1. Select Design > Format Background.
  2. In the Format Background pane, select Picture or texture fill.
  3. Select File.
  4. In the Insert Picture dialog box, choose the picture you want to use and then select Insert.