Storseminarium 1 - En sak i taget (facit)
Innan seminariet ska du ha gått igenom Inför seminariet nedan och gjort tillhörande quiz. Syftet med detta är att du ska bekanta dig med innehållet så eventuella frågor kan redas ut under seminariet.
Denna sida visar en del av det som kommer att diskuteras på seminariet. Det kan hända att handledarna också tar upp andra uppgifter som inte behöver något specifikt studentmaterial och då syns dessa uppgifter inte på sidan.
Inför seminariet
Under seminariet
Vi går igenom nedanstående uppgifter tillsammans, det kommer finnas möjlighet till diskussion och frågor. Känn er fria att följa med på uppgifterna på egen dator under seminariet om ni lär er bättre så, men vi kan inte garantera att vi har tid att vänta in alla.
Aritmetiska operationer
Uppgift 1: Beräkna
Prova att räkna ut nedanstående uttryck med hjälp av den interaktiva Python tolken
3 + 3
4 - 2
3 / 2
10 ** 3
-4 + 5
-9 + (2 * -3) ** 2
Vad händer? Vilken utskrift får vi? Stämmer det med vad du trodde?
Litteraler och Uttryck
Uppgift 2: Klassificera
Peka ut vad som är uttryck och vad som är litteraler i nedanstående.
3 + 3
False
not True
3.1415
Stämmer det med vad du trodde?
Samtliga 4 exempel är uttryck eftersom alla literaler i Python per definition är uttryck. Ett uttryck är ju något som kan evalueras till ett värde, och en literal är ju bara en representation av ett underliggande värde. I någon mening är alltså literaler den renaste formen av uttryck.
3 + 3
är ett uttryck,3
och3
är litteraler och därför deluttryck till uttrycket3 + 3
. (+
är en binär operator som ingår i uttrycket3 + 3
utan att i sig vara ett uttryck.)False
är en litteral och därför ett uttryck utan ytterligare deluttryck.not True
är ett uttryck,True
är en litteral och därför ett deluttryck tillnot True
. (not
är en unär operator som ingår i uttrycketnot True
utan att i sig vara ett uttryck.)3.1415
är en litteral och därför ett uttryck utan ytterligare deluttryck.
Variabler
Uppgift 3.1: str
Tilldela följande värde som sträng: Ford Prefekt
till en variabel name
.
|
|
Uppgift 3.2: int
Tilldela följande värde som integer: 42
till en variabel num_days
.
|
|
Uppgift 3.3: float
Tilldela följande värde som float: 299792.458
till en variabel speed
.
|
|
Uppgift 3.4: list
Tilldela de tre ovanstående variablerna till en lista travel_data
. Skriv sedan ut listan i terminalen.
|
|
Listor
Uppgift 4.1 +-operatorn
Utöka listan med ett resmål Magrathea
med hjälp av +
-operatorn och skriv ut nya listan i terminalen.
|
|
Notera att vi skapar en ny lista när vi konkatenerar travel_data
med ["Magrathea"]
. Vi ersätter dock versionen av listan utan "Magrathea"
när vi gör tilldelningen så listan som variabeln travel_data
refererar till kommer vara den nya konkateneringen. Detta kan exemplifieras av att evaluera båda raderna i lösningen upprepade gånger. Då skapar vi ju en ny konkatenering varje gång och får en ny "Magrathea"
i slutet.
Uppgift 4.2 Indexering av listor
Plocka ut antalet dagar som färden pågått och skriv ut i terminalen.
|
|
Rita gärna strängen på tavlan med varje tecken i en egen minnescell. Dvs. på samma sätt som den här bilden illustrerar i förberedelsematerialet:

Man kan illustrera index genom att peka på offset från där sekvensen startar. Index 0 är alltså början på strängen, innan vi läst några tecken alls. Läser vi ett tecken framåt från index 0 får vi ut första tecknet och stannar vid index (eller offset) 1 där vi ännu inte läst andra tecknet, osv. Vi kan tänka lite på det som en linjal, som självklart börjar på 0, och där varje tecken är en centimeter brett. Ett relaterat sätt att tänka på det är att index pekar på gränserna mellan tecknen.
Strängar
Uppgift 5.1 Slicing av stängar
Givet följande:
|
|
Plocka ut förnamnet och tilldela en ny variabel first_name
. Skriv ut variabeln i terminalen.
|
|
Uppgift 5.2: Indexering av strängar
Givet föjlande:
|
|
Skriv ut första bokstaven i förnamnet i terminalen.
|
|
Villkorssatser
Skapa en ny fil storsem1_villkorssatser.py
.
Följande är givet för nedanstående uppgifter.
|
|
För att anropa en funktion kan man köra filen i interaktivt läge med följande kommando i terminalen.
$ python3 -i storsem1_villkorssatser.py
Nu har datorn läst in koden i arbetsminnet. Vi kan manipulera våra variabler och anropa våra funktioner direkt i terminalen.
Uppgift 6.1: Sanningsvärden
Tilldela en variabel has_towel
sanningsvärdet True
.
|
|
Uppgift 6.2: if-satser
Skriv en if
-sats, om has_towel
är sann, skriv ut Du är redo för galaxen!
i terminalen,
|
|
Uppgift 6.3 else-satser
Utöka if
-satsen från ovan med en else
-klausul, som skriver ut Katastrof!
i terminalen. Testa koden med has_towel
som både True
och False
.
Vad händer? Vilken utskrift får vi? Stämmer det med vad du trodde?
|
|
Uppgift 6.4 elif-satser
Skriv kod som innehåller en av vardera: if
, elif
samt else
.
- Om du har handduk och färdas snabbare än eller lika med ljusets hastighet
299792.458
km/s, skriv utFärdas snabbt och i optimal komfort!
. - Om du har handduk och färdas under ljusets hastighet
299792.458
km/s, skriv utVi har precis startat
. - Annars skriv ut
Har ingen handduk... res på egen risk!
.
Justera värden på variablerna tills ni fått alla utskrifter (inte samtidigt).
Vad händer? Vilken utskrift får vi? Stämmer det med vad du trodde?
Funktioner
Skapa en ny fil storsem1_funktioner.py
.
Följande är givet för nedanstående uppgifter.
|
|
Uppgift 7.1: funktions definition
Skriv en funktion hej_galaxen
som skriver ut följande meddelande i terminalen Hej, galaxen! 🌌
.
Kör sedan filen i interaktivt läge och anropa funktionen. Vad händer?
Uppgift 7.2: argument till funktion
Skriv en funktion traveling(name, speed)
som skriver ut hur snabbt personen färdas med följande meddelande i terminalen.
|
|
Kör sedan filen i interaktivt läge och anropa funktionen med olika argument. Vad händer?
Uppgift 7.3: Returvärden
Skriv en funktion days_to_hours(num_days)
som omvandlar dagar till timmar och returnerar resultatet, t.ex.
days_to_hours(2)
48
Uppgift 7.4: (Extra) Kombinera funktioner
Skriv en funktion hours_to_minutes(num_hours)
som omvandlar timmar till minuter och returnerar resultatet t.ex.
|
|
Kombinera nu funktionerna days_to_hours
, hours_to_minutes
och print
. Så att med num_days = 2
, så fås utskriften
2880 minuter
Sidansvarig: Johan Falkenjack
Senast uppdaterad: 2024-07-26