Göm meny
Gäller för: HT25

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.

  1. 3 + 3
  2. False
  3. not True
  4. 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.

  1. 3 + 3 är ett uttryck, 3 och 3 är litteraler och därför deluttryck till uttrycket 3 + 3. (+ är en binär operator som ingår i uttrycket 3 + 3 utan att i sig vara ett uttryck.)
  2. False är en litteral och därför ett uttryck utan ytterligare deluttryck.
  3. not True är ett uttryck, True är en litteral och därför ett deluttryck till not True. (not är en unär operator som ingår i uttrycket not True utan att i sig vara ett uttryck.)
  4. 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.

1
name = "Ford Prefekt"

Uppgift 3.2: int

Tilldela följande värde som integer: 42 till en variabel num_days.

1
num_days = 42

Uppgift 3.3: float

Tilldela följande värde som float: 299792.458 till en variabel speed.

1
speed = 299792.458

Uppgift 3.4: list

Tilldela de tre ovanstående variablerna till en lista travel_data. Skriv sedan ut listan i terminalen.

1
travel_data = [name, num_days, speed]

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.

1
2
travel_data = travel_data + ["Magrathea"]
print(travel_data)

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.

1
print(travel_data[1])

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:

1
name = "Ford Prefect"

Plocka ut förnamnet och tilldela en ny variabel first_name. Skriv ut variabeln i terminalen.

1
2
first_name = name[:4]
print(first_name)

Uppgift 5.2: Indexering av strängar

Givet föjlande:

1
first_name = "Ford"

Skriv ut första bokstaven i förnamnet i terminalen.

1
print(first_name[0])

Villkorssatser

Skapa en ny fil storsem1_villkorssatser.py.

Följande är givet för nedanstående uppgifter.

1
2
3
4
name = "Ford Prefect"
num_days = 42
speed = 299792.458
destination = "Magrathea"

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.

1
has_towel = 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,

1
2
3
has_towel = True
if has_towel:
    print("Du är redo för galaxen!")

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?

1
2
3
4
5
has_towel = True
if has_towel:
    print("Du är redo för galaxen!")
else:
    print("Katastrof!")

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 ut Färdas snabbt och i optimal komfort!.
  • Om du har handduk och färdas under ljusets hastighet 299792.458 km/s, skriv ut Vi 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.

1
2
3
4
name = "Ford Prefect"
num_days = 42
speed = 299792.458
destination = "Magrathea"

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.

1
2
traveling("Ford Prefect", 299792.458)
Ford Prefect färdas i 299792.458 km/s

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.

1
2
hours_to_minutes(3)
180

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