Till KTH:s startsida Till KTH:s startsida

Labb 5

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.

Gör Läxa 4 innan du börjar med denna labb!

Uppgifter

I filen worldpop.txt finns befolkningsdata för all världens länder.

  1. Skriv en klass som kan användas för att skapa objekt som representerar ett land (motsvarar en datarad i filen).
    • Klassen ska ha minst tre attribut.
    • Metoderna __init__  och __str__  måste finnas med, samt tre metoder utöver dessa.
    • Skapa ett objekt och testa att metoderna fungerar.
  2. Skapa en lista med objekt
    • Låt programmet läsa in data från textfilen...
    • ... och skapa objekt som läggs i en lista.
    • Kontrollera att inläsningen fungerat bra.
  3. Beräkna världens befolkning
    Använd listan för att beräkna och skriva ut
    • världens totala befolkningsmängd 1950
    • världens totala befolkningsmängd 2012
  4. Lägg upp ditt färdiga program i Dropbox

Testning

Glöm inte att testa att ditt program fungerar som det ska.

Krav

Krav för programmen i labb 5:

  • Klassen ska ha minst tre attribut och minst tre metoder utöver __init__  och __str__.
  • Programmet ska läsa in data från en textfil och skapa objekt som läggs i en lista.
  • Programmet ska gå igenom listan och beräkna total befolkningsmängd 1950 och 2012.
  • ... 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 (samma som i läxa 4)

  1. Titta på filen worldpop.txt.
    Vilka data innehåller filen?
  2. De första fem raderna i filen är information om filens innehåll.
    Skriv ett par satser som läser in enbart dessa fem rader från filen.
  3. Resten av raderna i filen innehåller data.
    Hur ska man läsa in dessa rader?
  4. En rad innehåller data åtskilda av "/". Föreslå en strängmetod som delar upp raden vid varje "/" och visa hur man anropar den.
  5. Vilken datatyp returnerar strängmetoden ovan?
  6. Titta på första dataraden i filen: "Afghanistan/AF/4/8151/33397"
    Rita (gärna för hand) ett objekt med dessa data.
  7. Hitta på namn för de attribut du ritat i objektet ovan.
  8. Vilka metoder skulle passa bra i den klass som representerar ditt objekt?
    Ge minst tre förslag.
  9. Måste man definiera flera klasser om man vill ha flera objekt i ett program?
  10. Vilken listmetod kan man använda för att lägga till ett element i en lista?
    Visa hur den anropas!
  11. Rita en lista med tre objekt (data från tre länder).
  12. Visa hur man med hjälp av en slinga kan skriva ut data för alla objekt i listan.

Efter labben

Hur tycker du att ditt eget arbete med labben fungerade? Borde du ha gjort något annorlunda? Fundera en stund, och skriv upp några tips till dig själv inför arbetet med P-uppgiften!

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.
  • Inför metoden __lt()__ ("less than") och använd den för att sortera din lista.