Till KTH:s startsida Till KTH:s startsida

Ändringar mellan två versioner

Här visas ändringar i "Laboration 6" mellan 2016-02-22 11:32 av Linda Kann och 2016-02-22 11:34 av Linda Kann.

Visa < föregående | nästa > ändring.

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?
Efter labben Frivilliga extrauppgifter: