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 + 34 - 23 / 210 ** 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 + 3Falsenot True3.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,3och3är litteraler och därför deluttryck till uttrycket3 + 3. (+är en binär operator som ingår i uttrycket3 + 3utan 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 Trueutan 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.458km/s, skriv utFärdas snabbt och i optimal komfort!. - Om du har handduk och färdas under ljusets hastighet
299792.458km/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
