kmom02
Detta seminarium tar upp följande områden: loopar, felhantering och problemlösning.
Förberedelser
Section titled “Förberedelser”Läs Om seminarier.
Loopar
Section titled “Loopar”-
Vad är skillnaden mellan en for-loop och en while-loop i Python?
-
Vad händer om villkoret i en while-loop aldrig blir False?
-
Går det att nästla (lägga en loop inuti en annan loop) i Python? Ge ett exempel och förklara vad som händer.
-
Vad betyder nyckelordet break i en loop, och hur skiljer det sig från continue?
-
Kan en for-loop köras utan att använda range()? Ge ett exempel.
Felhantering
Section titled “Felhantering”-
Vad är ett exception i Python, och när uppstår det?
-
Vad är skillnaden mellan try-except och att bara skriva koden utan felhantering? Ge gärna ett exempel.
Pseudokod
Section titled “Pseudokod”-
Varför använder man pseudokod i programmering?
-
Är pseudokod bunden till ett specifikt programmeringsspråk? Motivera ditt svar.
Hur kod funkar
Section titled “Hur kod funkar”-
Vad är skillnaden mellan range(5) och range(1, 5) i en for-loop?
-
Är det bra eller dåligt att fånga alla fel med ett generellt except:? Motivera ditt svar.
Tolka kod
Section titled “ Tolka kod”-
Vad gör följande kod och vad blir utskriften?
for i in range(2, 10, 2):print(i) -
Vad blir resultatet av koden nedan och varför?
for i in range(2):for j in "hej":print(i, j) -
Vad är syftet med att fånga ett exception som en variabel så här,
e
:except ValueError as e:print("Fel:", e) -
Titta på nedanstående kod och svara på följande frågor utan att exekvera koden:
- Vad skrivs ut när programmet körs?
- Förklara varför loopen slutar.
- Vilka värden får y under loopens gång?
x = 10y = 0while x > 0:if x % 2 == 0:y += xelse:y -= xx -= 3print("Slutvärde av y är:", y)
Praktisk uppgift
Section titled “ Praktisk uppgift”Börja med att planera er lösning, vilken kod behövs och vilka datatyper er data kommer ha i de olika stegen. Efter ni har en plan, skriv koden. Använd frågorna nedanför för att planera koden ni behöver för att lösa uppgiften.
- Går det att identifiera delproblem som kan lösas för att testa tidigt?
- Vilka delproblem i så fall?
- Hur kan du testa dessa?
- Ge förslag på lämpliga variabler och vilken datatyp de ska innehålla
- Vilken/Vilka språkkonstruktion/er behövs?
- Vad börjar du med?
- Formulera en lösning i pseudo-kod
- diskutera alternativa lösningar
Uppgifter
Section titled “Uppgifter”-
Skriv ett program utifrån nedanstående pseudokod:
# Skriv ut en välkomsthälsning med info om antalet gissningar# Slumpa fram ett tal från 0 till och med 100# Repetera så länge talet inte är lika med gissning och antalet gissningar är mindre än 8# Mata in ett tal, felmeddelande om det inte är ett heltal# Om talet är mindre än gissning så# skriv ut "För lågt!"# Om talet är större än gissning så# skriv ut "För högt!"# Om antalet gissningar är slut innan talet hittas, så skriv ut "Tyvärr, du fick slut på försök!"# När talet är hittat, skriv ut "Grattis, du gissade rätt <antal försök> försök!"Resultatet kan se ut så här:
Terminal window Välkommen till gissa talet! Du har 8 försök!Ange ett tal mellan 0 och 100: 60För lågtAnge ett tal mellan 0 och 100: 99För högtAnge ett tal mellan 0 och 100: 94Grattis, du gissade rätt på 4 försök!Eller så här:
Terminal window Välkommen till gissa talet! Du har 8 försök!Ange ett tal mellan 0 och 100: 90För högtAnge ett tal mellan 0 och 100: 80För högt...Ange ett tal mellan 0 och 100: 30För högtAnge ett tal mellan 0 och 100: 20För högtTyvärr, du fick slut på försök! -
Skriv ett program som tar en sträng och använder enumerate() för att gå igenom strängen. Skriv ut indexet och tecknet om tecknet är en vokal (a, e, i, o, u, y, å, ä, ö). Räkna hur många vokaler det finns totalt och skriv ut.
Resultatet kan se ut så här:Terminal window Kolla vokaler i en sträng: Python är roligtIndex 1: yIndex 4: oIndex 7: äIndex 11: oIndex 13: iAntal vokaler: 5