Visa version
Version skapad av Linda Kann 2016-02-22 11:34
Visa
< föregående
|
nästa >
Jämför
< föregående
|
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
- år det att lagra ett eget objekt (t ex Land) i en set?
- Vilka av följande operatorer finns för set: & % * -
- Vad är det för skillnad på set och frozenset?
- Nämn någon operation som finns för set men inte för frozenset.
- Går det att sortera en set?
- Vad innebär det om set1 < set2 är True?
- Var i Pythons dokumentation finns alla random-funktioner beskrivna?
- Hur används random.seed()?
- Hur öppnar man en fil för utskrift?
- Vad händer om filen redan finns när den öppnas för utskrift?
- Vilken sats motsvarar print vid utskrift på fil?
- Hur får man radbyte vid utskrift på fil?