Till KTH:s startsida Till KTH:s startsida

Laboration 5

Folk

Laboration 5

Repetera strängmetoder, listmetoder, filer och objekt i kursboken.

Labben redovisas på veckans övning. Det Pythonprogram du skriver kan ge 0-2 bonuspoäng (beroende på hur väl det uppfyller kraven).
Instuderingsfrågorna redovisas med ett prov, som också kan ge max 2 bonuspoäng.

Uppgift 1: Läxa

Uppgift 2 

Modifiera klassen du skrev i läxan med fler metoder

  • Metoden __init__  har du förstås redan definierat
  • Lägg till metoden __str__ (ska visa alla attributens värden)
  • Lägg till metoden __lt__ (ska jämföra objekten m a p medianålder år 2015)
  • Lägg till en metod som returnerar den lägsta medianåldern för landet.
  • Lägg till en metod som returnerar den högsta medianåldern för landet.
  • Skapa två objekt och testa att metoderna fungerar.

Uppgift 3 

Skapa en lista med objekt

  • Låt programmet läsa in data från textfilen median_age.csv
  • Läs in alla data från filen och skapa objekt för varje rad. Lägg in varje objekt i en lista. Provkör!
  • Gör en slinga som skriver ut data för alla objekt i listan. Provkör!

Uppgift 4

Sortera listan

  • Läs om sort-metoden i avsnittet Lists i Pythons dokumentation.
  • Sortera listan.
  • Kontrollera att sorteringen fungerat bra genom att skriva ut listan.

Uppgift 5

Högst medianålder

Skriv en funktion som går igenom listan och tar reda på vilket land som har den högsta medianåldern.

Uppgift 6

Testa att ditt program fungerar som det ska.

Lägg upp ditt färdiga program i Dropbox

Krav

Krav för programmen i labb 5:

  • Klassen ska ha metoderna enligt ovan.
  • Programmet ska läsa in data från en textfil och skapa objekt som läggs i en lista.
  • Programmet ska sortera listan.
  • Programmet ska kunna hitta det land som har högst medianålder
  • ... och dessutom ska programmet uppfylla följande krav från tidigare labbar:
    • Programmet ska ha en kommentar överst med författarnas namn och datum.
    • Programmet ska vara uppdelat i funktioner med lämpliga parametrar och returvärden.
    • Varje funktion/metod ska ha en förklarande kommentar.
    • Inga globala variabler får förekomma (i funktioner eller metoder).
    • Variabel-/funktions-/attribut-namn ska göra programmet lättare att förstå.
    • Klasser och funktioner ska stå överst i programfilen, övriga satser ska stå längst ner (blanda inte).
    • Testdata ska finnas med i kommentar sist i programmet.
    • Programfilen ska kopieras till gruppens Dropbox-katalog.

Instuderingsfrågor

  1. Hur namnger man ett privat attribut?
  2. Var i programmet kan man komma åt privata attribut?
  3. Vad gör en åtkomstmetod (accessor)?
  4. Vad gör en ändringsmetod (modifier)?
  5. Visa ett exempel på en nästlad for-slinga.
  6. Är det den yttre eller inre slingan som går runt flest varv i en nästlad slinga?
  7. Vad ska metoden __lt__ kunna göra?
  8. Hur definierar man en metod så att två objekt kan interagera?
  9. Visa hur man med hjälp av en slinga kan skriva ut data för alla objekt i en lista.
  10. Hur skriver man för att klass A ska ärva från klass B?
  11. Vad är relationen mellan en superklass och en subklass?
  12. Vad ärvs?

Efter labben

Nu har du arbetat ett tag med din nya labbkompis. Hur ofta byter ni roller?

Frivilliga extrauppgifter:

  • Lägg till en meny där användaren kan välja vad hen vill göra.
  • Skriv ut objekten på fil igen när programmet avslutas.
  • Se till att programmet inte kraschar för felaktig inmatning.