kmom06
Detta seminarium tar upp följande områden: Dictionaries och tupler
Förberedelser
Section titled “Förberedelser”Läs Om seminarier.
-
Vad innebär det att man “öppnar en fil”?
-
Förklara absolut sökväg respektive relativ sökväg.
-
Vad är skillnaden mellan att öppna en fil i läsläge (‘r’) och i skrivläge (‘w’)?
-
Vad händer om man försöker öppna en fil som inte finns i läsläge?
-
Vad händer om man öppnar en existerande fil i skrivläge?
-
Vad är syftet med
with open(...) as f:
istället för att öppna och stänga filen manuellt? -
Vad är skillnaden mellan read(), readline() och readlines()?
-
Ge minst två exempel på program i verkliga livet behöver läsa från eller skriva till filer?
-
Varför är det viktigt att stänga en fil efter att koden har jobbat med den?
Hur kod funkar
Section titled “Hur kod funkar”-
Vad gör följande kod? Finns det några potentiella problem?
f = open("data.txt", "r")lines = f.readlines() -
Vad kan vara fel i koden nedan och hur kan det åtgärdas?
#lines är en lista med strängarwith open("output.txt", "w") as file:file.write(lines)
Tolka kod
Section titled “ Tolka kod”-
Vad blir det för utskrift om koden nedan körs?
with open("exempel.txt", "w") as f:f.write("I am happy!\n")f.write("You are happy!\n")with open("exempel.txt", "a") as f:f.write("We are happy!\n")with open("exempel.txt", "r") as f:content = f.read()print(content)
Praktiska uppgifter
Section titled “ Praktiska uppgifter”Skapa ett program som har följande funktionalitet:
- Läser in frågor och svar från en textfil.
- Slumpar fram frågor givet antalet.
- Skapar och kör ett quiz.
- kontrollerar
- Räknar poäng.
- Hanterar att spara de 3 bästa resultatet för respektive quiz baserat på antalet frågor.
De funktioner som ska finnas är:
load_questions_from_file(filename)
: läser alla frågor inklusive svar från filen namngiven filename till en lista och returnerar listan
shuffle_questions(question_list)
: blandar frågorna i listan question_list
create_quiz(nr_of_questions, question_list)
: skapar en dictionary där nycken är frågan och värdet är svaret, denna returneras
quiz(quiz_dict)
: användaren ser en fråga i taget och matar in sitt svar efter hand. När all frågor besvarats skrivs poängen ut (antalet rätta svar) och användaren matar in sitt namn. Antalet poäng sparas på fil tillsammans med frågor, rätt svar och användarens svar. Filen namnges <användarensnamn>_<antalet frågor>.txt
show_result(filename)
: namnet på användaren, antalet frågor och poäng visas följt av att varje fråga tillsammans med användarens svar och korrekt svar visas och för varje fråga som inte är korrekt skrivs även texten FEL.
update_highscore(name: str, user_points: int, nr_of_questions: int)
: uppdaterar filen med highscore som endast innehåller de 3 bästa resultaten sorterade så att bästa är överst. Filerna med highscore är namngivna highscore_<antalet frågor>.txt
.
Börja med att skapa textfilen namngiven questions.txt och klistra in dessa frågor inklusive rätt svar och placera dem i en undermapp namngiven data:
Vad heter huvudstaden i Sverige?|StockholmHur många landskap finns det i Sverige?|25Vad är 5 * 7?|35Vilket år blev Sverige medlem i EU?|1995Vad heter världens största hav?|Stilla havetVad kallas programmeringsspråket som börjar med 'P' och används ofta i undervisning?|PythonVad är huvudstaden i Norge?|OsloHur många ben har en insekt?|6Vad är summan av vinklarna i en triangel?|180Vilket land kommer pizzan ursprungligen från?|ItalienVad heter världens högsta berg?|Mount EverestHur många kontinenter finns det?|7Vad är det kemiska tecknet för vatten?|H2OVem skrev Harry Potter-böckerna (efternamnet efterfrågas)?|RowlingVilken planet är närmast solen?|MerkuriusHur många sekunder är det på en minut?|60Vad heter färgen man får om man blandar blått och gult?|GrönHur många strängar har en gitarr?|6Vilket språk talas i Brasilien?|PortugisiskaVad är 12 delat med 4?|3
Extra:
- skriv ut en sammanfattning efter quizet är klart. Skriv ut spelarens namn, hur många frågor som svarades på, hur många rätt spelaren fick och alla frågor med det rätta svaret, spelarens svar och om svaret var rätt eller fel.
- hålla highscore sorterad efter poäng
- begränsa till ett viss antal resultat på highscore-filer