Vapaa kuvaus

Aloituksia

3

Kommenttia

65

  1. Kirjasto.dat+on+242+tavua+ja+se+on+Tiedostot-kansiossani,+eli+se+on+ok.+Myös+Lisää+uusi+kirja+luetteloon+-lomake+ilmestyy+nätisti+komentokehoitteen+komennon+jälkeen+(otsikossa+Lisää-sanassa+vain+pientä+sanomista,+mutta+johtunee+siitä+UTF8:sta).
  2. Uskomatonta...+nyt+se+herjaa+pickle:ä,+vaikka+kuinka+yritän+esitellä+sitä...,+miten+tämä+voi+olla+näin+vaikea???+Ymmätätisinköhän+sen+sillä+menulla+tehtynä+paremmin?tiedosto+=+open("kirjasto.txt",+"a")+#_Avataan+tiedosto,+johon+tallennetaan.#_Alla+oleva+tallennusrutiini+tallentaa+yhden+kirjan+yhdelle+riville.List+=+[{"kirja1",+"kirjailija1",+"jv1""kirja2",+"kirjailija2",+"jv2""kirja3",+"kirjailija3",+"jv3"}]#_"Sinun+tulee+pitää+yhtä+listaa+jonka+tallennat+näin":def+SaveListToFile():++++with+open("kirjasto.txt",+'wb')+as+f:++++pickle.dump(List,+f)#_"Käytä+(pickle)+ja+(os)+kirjastoja,+niin+lataus+ja+tallennus+on+yksinkertaista.+Tämä+varmistaa+tiedoston+olemassa+olon,+ettei+päädyttäisi+virheeseen."def+LoadFileToList():++++if+os.path.isfile("kirjasto.txt"):++++++++List=[]++++with+open("kirjasto.txt",+'rb')+as+f:++++++++List+=+pickle.load(f)++++return+List#_"Ihan+varalta,+edellisiä+tallennus+ja+lataus+funktioita+kutsutaan+tarvittaessa+näin":SaveListToFile();List+=+LoadFileToList();#_Kirjat+luetaan+tiedostoon+talteen+alla+olevalla+tavalla.def+lataaTiedot(tiedosto):++++lista+=+[]++++with+open(tiedosto,+'r')+as+tiedostoObjekti:++++++++++++for+rivi+in+tiedostoObjekti:++++++++++++++++kirja+=+rivi.replace("\n","").split(',')++++++++++++if+len(kirja)+==+3:++++++++++++++++lista.append({"kirja":+kirja[0],+"kirjailija":+kirja[1],+"jv":+kirja[2]})++++return+lista#_Kirjat+tulostetaan+alla+olevalla+tavalla.print(lataaTiedot("kirjasto.txt"))[{'kirja':+'kirja1',+'kirjailija':+'kirjailija1',+'jv':+'jv1'},+{'kirja':+'kirja2',+'kirjailija':+'kirjailija2',+'jv':+'jv2'},+{'kirja':+'kirja3',+'kirjailija':+'kirjailija3',+'jv':+'jv3'}]tiedosto.close()+#_Suljetaan+tiedosto,+johon+on+tallennettu.#-----ALKAA+Funktioiden+esittely----------------------------------------#Näitä+kahta+funktiota+tarvitaan,+kun+etsitään,+onko+kirjastossa+haluttua+kirjaa+ja#kun+poistetaan+kirjaa.#Etsitään+onko+List:ssä+kirjaa.def+onkoKirjaa(kirja):++++for+x+in+List:++++++++if+x["kirja"]==kirja:+return+True++++return+False#Palautetaan+kirja.def+getKirja(kirja):++++for+x+in+List:++++++++if+x["kirja"]==kirja:+return+x++++return+None+#-----LOPPUU+Funktioiden+esittely---------------------------------------print("Tervetuloa+Kirjakauppaan!",+"\n",+"\n"+#Näin+saat+tekstiin+rivinvaihdon+lisäksi+välirivin."Uuden+kirjan+lisäys+Kirjakauppaan:",+"\n"+"Jos+et+nyt+halua+lisätä+kirjaa,+niin+lisää+numero+nolla+seuraaviin+kohtiin,+muutoin+anna+pyydetyt+tiedot:")kirja+=+input("Kirjan+nimi:+")kirjailija+=+input("Kirjailijan+nimi:+")jv+=+input("Julkaisuvuosi:+")#-----ALKAA+Lisätään+appendilla+uusi+kirja------------------------------#Lisätään+uusi+tuote+List:aanuusiKirja+=+{"kirja":kirja,+"kirjailija":kirjailija,+"jv":jv}if+kirja+!=+"0"+and+kirjailija+!=+"0"+and+jv+!=+"0":+#Blokkaa+pois+sen,+että+nollat+tallentuisivat+uutena+kirjana+jne.++++List.append(uusiKirja)#-----LOPPUU+Lisätään+appendilla+uusi+kirja-----------------------------tiedosto+=+open("kirjasto.txt",+"w")+#Tiedostokahvalle+nimeksi+tiedosto+ja+uuden+#tiedoston+avaaminen+kirjoittamista+varten.#Pyyntö+kirjoittaa+yllä+pyydetyt+tiedot+tiedostoon+riveittäin.tiedosto.write(kirja+++"\n")tiedosto.write(kirjailija+++"\n")tiedosto.write(jv+++"\n")tiedosto.close()+#Tiedoston+sulkeminen.tiedosto+=+open("kirjasto.txt",+"r")+#Tiedoston+avaaminen+lukemista+varten.+++while+True:++++++++print("Anna+valitsemasi+kirjan+nimi,+niin+tulostan+sen,+jos+se+löytyy+kirjastosta.")++++print("Komennolla+Kaikki+tulostetaan+kaikki+kirjaston+kirjat.")+++++print("Komennolla+Poista+poistetaan+valitsemasi+kirjaston+kirja.")++++print("Komennolla+Poistu,+tämä+kirjasto-ohjelma+sulkeutuu.")++++++++valinta+=+input().capitalize()+#Asiakas+voi+syöttää+vastauksensa,+joka+alkaa+pienellä+kirjaimella+esim.+poistu+->+Poistu+++++++++if+valinta+==+"Poistu":+#Ohjelmasta+poistuminen.++++++++break++++elif+valinta+==+"Kaikki":+#Kaikkien+kirjaston+kirjojen+tulostaminen.++++++++for+x+in+List:++++++++++++print(x["kirja"])++++++++++++print(x["kirjailija"])++++++++++++print(x["jv"],+"\n")+#\n+erottelee+tulokset+toisistaan+=+tyhjä+rivi+++++elif+onkoKirjaa(valinta):+#Tulostaa+pyydetyn+kirjan,+jos+se+on+kirjastossa.++++++++print(getKirja(valinta))++++#elif+valinta+==+"Poista":++++elif+onkoKirjaa(valinta):+#Etsitään,+onko+List:ssä+kirjaa.++++++++print(getKirja(valinta))+#Palautetaan+kirja.++++elif+valinta+==+"Poista":+#Poistaa+pyydetyn+kirjan+kirjastosta.++++++poistettava+=+input+("Minkä+kirjan+haluat+poistaa?+")++++++for+i+in+range(len(List)):++++++++if+List[i]['kirja']+==+poistettava:++++++++++del+List[i]++++++++++break++++++print("Jäljelle+jääneet+kirjat:\n"+++",+".join(x["kirja"]+for+x+in+List))++++else:++++++++print("Syötteesi+oli+virheellinen,+tai+tätä+kirjaa+ei+ole+tässä+kirjastossa.")tiedosto.close()+#Suljetaan+tiedosto.