kmom06 del 2
Detta seminarium tar upp följande områden: Skriva till och läsa från textfil
Förberedelser (del 2)
Section titled “Förberedelser (del 2)”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 = [ "hej\n", "på\n", "dej\n"]with 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 en meny med alternativen:
- Visa alla böcker
- Lägg till en bok
- Sök bok givet titel
- Ta bort bok givet titel
- Avsluta
Titel, författare och utgivningsår för alla böcker finns på en textfil men namnet books.txt.
Här finns ett exempel på innehåll på filen books.txt
Sagan om ringen;J.R.R. Tolkien;1954Dune;Frank Herbert;1965Harry Potter och de vises sten;J.K. Rowling;1997Liftarens guide till galaxen;Douglas Adams;19791984;George Orwell;1949Stolthet och fördom;Jane Austen;1813Möss och människor;John Steinbeck;1937Moby Dick;Herman Melville;1851Brott och straff;Fjodor Dostojevskij;1866Mio, min Mio;Astrid Lindgren;1954Bröderna Lejonhjärta;Astrid Lindgren;1973Rosens namn;Umberto Eco;1980När programmet startar ska ett dictionary med bok-information skapas baserat på den information som finns på textfilen books.txt. På textfilen används separatorn semikolon (;) mellan titel, författare och utgivningsår, dvs
<titel>;<författare>;<utgivningsår>.
Nyckeln ska vara boktitel (sträng). Värdet ska vara en tupel med författare (sträng) och utgivningsår (heltal).
När programmet avslutas ska innehållet i dictionaryt sparas på textfilen books.txt
Följande funktioner ska finnas (i detta fall anges datatyperna på parametrarna men du kan göra som du vill):
read_books_from_file(filename: str): läser bok-information från filen med namnet filename och returnerar ett dictionary (enligt ovan) med alla böcker.save_books_on_file(filename: str, books: dict): sparar innehållet i books på filen med namnet filenameshow_all_books(books: dict): Skriver ut alla böcker. Inledningsvis görs en utskrift av antalet böcker som finns i dictionaryt. Därefter presenteras en bok i taget på formen: < titel> är skriven av < författare > och gavs ut < year>add_book(books: dict, title: str, author: str, publ_year: int): lägger till en bok enligt parametrarna i dictionaryt booksfind_book(books: dict, title: str): om boken med titelntitlefinns skrivs författare och utgivningsår ut. Om den inte finns, skrivs en text ut som meddelar detta.remove_book(books: dict, title: str): tar bort boken med titelntitleom den finns och text om att boken tagits bort. Om den inte finns, skrivs en text ut som meddelar detta.