Till KTH:s startsida Till KTH:s startsida

Visa version

Version skapad av Linda Kann 2016-02-22 11:09

Visa nästa >
Jämför nästa >

Laboration 6

Laboration 6

Läs om set och arv i kursboken, och repetera avsnittet om filer

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: Skapa en ny klass

Definiera en egen klass Foodset som subklass till set

  • Metoden __init__  behöver du inte definiera - den som redan finns i set kan användas.
  • Metoden __str__ ska överlagras. Istället för utskriften {1, 2, 3} vill vi ha 1 2 3 dvs inga parenteser runt mängden och mellanslag istället för komma mellan elementen.
  • Lägg också till en egen metod, t ex simple (True om antal element är mindre än 6)
  • Testa att dina nya metoderna fungerar.

Uppgift 3: Läs in från fil

  • Låt programmet läsa in data från filen ingredienser.txt
  • För varje maträtt ska ingredienserna läggas in i ett Foodset-objekt...
  • ...och maträtten och Foodset-objektet ska skrivas ut, så här:

Pannkakor innehåller vetemjöl gluten salt mjölk ägg smör mjölk

Rårakor innehåller potatis smör mjölk salt

...

Uppgift 4: Fråga användaren

  • Lägg till en fråga till användaren om vad hen inte äter, till exempel så här

Vad är du allergisk mot? ägg gluten selleri

  • Läs in svaret och skapa ett nytt Foodset-objekt.
  • Skriv ut objektet så att du ser att det fungerar.

Uppgift 5: Skriv ut allergener

  • Ändra utskriften från programmet så att det bara skriver ut allergenerna, alternativt texten "inga av dina allergener" Använd lämpliga set-operationer. Körexempel:

Vad är du allergisk mot? ägg gluten selleri

Pannkakor innehåller gluten ägg

Rårakor innehåller inga av dina allergener

...

Uppgift 6: Skriv ut på fil

  • Öppna en ny fil för utskrift och låt programmet skriva ut all information på filen.
  • Låt användaren välja filnamnet för utfilen. Körexempel:

Vad är du allergisk mot? ägg gluten selleri

Vilken fil vill du skriva ut på? matkoll.txt

Utskriften finns nu på filen matkoll.txt

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 6:

  • Klassen Foodset ska vara subklass till set
  • Foodset ska ha nya metoder enligt ovan.
  • Programmet ska använda set-operationer för att kolla allergener.
  • Programmet ska läsa in data från en fil och skriva ut på en annan fil.
  • ... 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

Efter labben

Frivilliga extrauppgifter: