- Onko Minkkilaukku enää 'linjoilla'?
Mietin, että jos kehittäisin vielä tuota karkkikauppaani siten, että se tallentaisi karkit, niin kuinka se koodilla tehtiinkään? - No sittenpä pitää vaihtaa kanavaa! Kiitos vinkistä!
- Tuon ymmärsin.
Mietin eilen, että onko se sitten kamalan hankalaa, että 'sanon' asiakkaalle siinä alussa, että jos et halua lisätä nyt karkkia, niin laita x-merkit pyydettyihin kohtiin ja pääset jatkamaan seuraavaan valikkoon. Sen jälkeen koodi hoitaisi sen, että ne x-merkit eivät mene tallennuksiin? Nythän ne menevät ja ne voi toki poistaa Poista-käskyllä, mutta minusta olisi hauskaa, että koodi 'ymmärtäisi' x-merkin olevan epäkelpo... - Mmm... haluan pitää oman koodini ja tehdä siihen vain sen muutoksen, että asiakkaan ei tarvitsisi heti alussa lisätä karkkia, jos ei halua. Eli että asiakas pääsisi luuppiin sisään ja jos sitten haluaisi valita karkin lisäyksen, niin sitten... Eikö tätä kukaan osaa korjata sillä tavalla? Nuo neuvot, joita olen saanut ovat liian hienoja, en ymmärrä niitä...
- Hei!
Olen siis muuten tyytyväinen koodiini, mutta ongelamani on tämä:
En keksi siis jälleenkään, millä siinä alussa voisi valita, että:
(if) Lisää karkki tai
(else) siirry alempana olevaan valikkoon tekemään valintasi.
Eli että siinä asiakas pääsisi ohittamaan tarvittaessa sen uuden karamellin syöttämisen... - Kuka osaa, vai jälleenkö Minkkilaukku (hymy)?
Mietin koodiani jälleen, kun ei ollut muuta tekemistä. Karkkikauppani on hieman hassu, sillä se 'pakottaa' lisäämään karkin alussa, vaikka asiakas voisi haluta vain katsoa, mitä on tarjolla tms.
En keksi siis jälleenkään, millä siinä alussa voisi valita, että: lisää karkki, tai siirry alempana olevaan valikkoon tekemään valintasi.
Todennäköisesti olen taas niin lähellä oikeaa, mutta kus se ei riitä...
List = [{"tuote":"Fasu", "valmistaja":"Fazer"},{"tuote":"Suukko", "valmistaja":"Brunberg"},{"tuote":"Lakupala", "valmistaja":"Panda"}]
#-----ALKAA Funktioiden esittely, joita tarvitaan myöhemmin----------
#Näitä kahta funktiota tarvitaan, kun etsitään, onko Karkkikaupassa kysyttyä tuotetta...
#Etsitään onko List:ssä tuotetta tuote
def onkoTuotetta(tuote):
for x in List:
if x["tuote"]==tuote: return True
return False
#Etsitään tuote List:stä ja palautetaan se
def getTuote(tuote):
for x in List:
if x["tuote"]==tuote: return x
return None
#-----LOPPUU Funktioiden esittely, joita tarvitaan myöhemmin---------
print("Uuden tuotteen lisäys karkkikauppaan. Anna pyydetyt tiedot:")
tuote = input("Karkin nimi: ")
valmistaja = input("Valmistajan nimi: ")
#parasta_ennen_pvm = input("Parasta ennen pvm: ")
#-----ALKAA Lisätään appendilla uusi tuote mukaaan-------------------
#Lisätään uusi tuote List:aan
uusiTuote = {"tuote": tuote, "valmistaja": valmistaja}
List.append(uusiTuote)
#-----LOPPUU Lisätään appendilla uusi tuote mukaan-------------------
tiedosto = open("karkkikauppa.txt", "w") #Tiedostokahvalle nimeksi tiedosto ja uuden
#tiedoston avaaminen kirjoittamista varten.
#Pyyntö kirjoittaa yllä pyydetyt tiedot tiedostoon riveittäin.
tiedosto.write(tuote "\n")
tiedosto.write(valmistaja "\n")
#tiedosto.write(parasta_ennen_pvm "\n")
tiedosto.close() #Tiedoston sulkeminen.
tiedosto = open("karkkikauppa.txt", "r") #Tiedoston avaaminen lukemista varten.
while True:
print("Anna valitsemasi karkin nimi, niin tulostan sen, jos se löytyy karkkikaupasta.")
print("Komennolla Kaikki tulostetaan kaikki karkkikaupan karkit.")
print("Komennolla Poista poistetaan valitsemasi karkkikaupan karkki.")
print("Komennolla Poistu, tämä ohjelma loppuu.")
valinta = input()
if valinta == "Poistu": #Ohjelmasta poistuminen.
break
elif valinta == "Kaikki": #Kaikkien karkkikaupan karkkien tulostaminen.
for x in List:
print(x["tuote"])
print(x["valmistaja"], "\n") #\n erottelee tulokset toisistaan = tyhjä rivi
elif onkoTuotetta(valinta): #Tulostaa pyydetyn karkin, jos se on karkkikaupassa.
print(getTuote(valinta))
#elif valinta == "Poista":
elif onkoTuotetta(valinta): #Tulostaa pyydetyn karkin, jos se on karkkikaupassa.
print(getTuote(valinta))
elif valinta == "Poista": #Poistaa pyydetyn karkin karkkikaupasta.
poistettava = input ("Minkä karkin haluat poistaa? ")
for i in range(len(List)):
if List[i]['tuote'] == poistettava:
del List[i]
break
print("Jäljelle jääneet karkit:\n" ", ".join(x["tuote"] for x in List))
else:
print("Syötteesi oli virheellinen, tai tätä karkkia ei ole tässä karkkikaupassa.")
tiedosto.close() #Suljetaan tiedosto. - Uskomatonta! Kiitos! En ollut ihan hirveän kaukana oikeasta toteutuksesta, mutta koodin kanssa se ei riitä. No toki osaavat sitten osaavat tehdä useammankin eri toteutuksen samasta asiasta! Nyt minulla on kirja lainassa, jossa on lopussa oikeat vastaukset, joka hieman vähentää tuskaa, mutta ehkäpä siirryn nyt kirjanpito-tehtävien miettimiseen. : D
- En saa tuota def getTuote(tuote) ja def deleteTuote(tuote):tta 'naitettua' yhteen, jotta onnistuisin karkin poistossa, vaikka teen mitä! Nyt tarvitaan Minkkilaukun taikoja...
- Ok! Hieno koodi, mutta ei tällainen aloittelija vielä ymmärrä sitä. Eikö tuohon del loop:iin saa lisättyä sitä poistettavan karkin arvoa?
- Juuh, mutta kun se ei toiminut se aiempi koodi.
Alla olevaa koodi on mielestäni muuten 'hyvä', mutta edelleenkään en saa sitä avain-arvo-parin arvoa 'irti' (ja sijoitettua).
elif valinta == "Poista": #Poistaa pyydetyn karkin karkkikaupasta (käytetään: del loop:a)
print("Karkkilista: " str(List))
for i in range(len(List)):
if List[i]['tuote'] == remove_List:
del List[i]
break - Ei onnistu tämäkään, kun en keksi, miten tuohon koodiin saadaan mukaan se valittu karkki. Ei taida minun aivot taipua tällaiseen...
elif valinta == "Poista": #Poistaa pyydetyn karkin karkkikaupasta (käytetään: del loop:a)
print("Karkkilista: " str(List))
for i in range(len(List)):
if List[i]['tuote'] == ????????????????????????????:
del List[i]
break
print("Jäljelle jääneet karkit: " str(List)) - Ei onnistu tämäkään, kun en keksi, miten tuohon koodiin saadaan mukaan se valittu karkki. Ei taida minun aivot taipua tällaiseen...
elif valinta == "Poista": #Poistaa pyydetyn karkin karkkikaupasta (käytetään: del loop:a)
print("Karkkilista: " str(List))
for i in range(len(List)):
if List[i]['tuote'] == ????????????????????????????:
del List[i]
break
print("Jäljelle jääneet karkit: " str(List)) - Tuota pitää varmaan katsoa uusin silmin huomenna, kiitos!
- Eli olen ollut todella lähellä koko päivän... kaikki alla olevia kokeiltu, samoin sitä, että hakee kaikki, mutta ei...
elif valinta == "Poista":
#print(onkoTuotetta(valinta))
#print(getTuote(valinta))
#print(deleteTuote(valinta)) - Uskomatonta... olen tuhannella tapaa yrittänyt vielä saada koodin antamaan VAIN KARKIT, jotta voisin poistaa niistä yhden... Oletan nimittäin, että tuo koodin loppu on oikein, mutta tämä tehtävä kaikkinensa oli hankala siksi, että siinä oli niitä avain-arvo-pareja ja niitähän se syöttää tarjolle, vaikka tekisi mitä..., ei anna vain toista!
elif valinta == "Poista": #Poistaa pyydetyn karkin karkkikaupasta.
print(List)
print("Minkä karkin haluat poistaa? ")
remove_List = input ()
try:
List.remove (remove_List)
print(List)
except ValueError:
print("Poistettava karkki ei ole karkkikaupassa.") - On hankalaa tämä koodaus, turhauttavaakin, kun ei ota onnistuakseen, vaikka lukee ohjeita ja kokeilee eri tapoja! Mutta nyt tuo onnistuu! Yritän ehkä vielä huomenna aikani kuluksi saada sieltä poistettua karamelleja, katotaan kuinka käy! Kiitos Minkkilaukulle! Olet ihan opettaja-ainesta!
- Nyt sentään pääsin luupista pois ja kaikki muu onnistuu, mutta vieläkään ne uudet tuotteet eivät nouse List:iin muiden seuraksi...
print("Uuden tuotteen lisäys karkkikauppaan. Anna pyydetyt tiedot:")
tuote = input("Karkin nimi: ")
valmistaja = input("Valmistajan nimi: ")
#parasta_ennen_pvm = input("Parasta ennen pvm: ")
#-----ALKAA Lisätään appendilla uusi tuote mukaaan-------------------
#Lisätään uusi tuote List:aan
uusiTuote = {input(), input()}
List.append(uusiTuote)
#OMA TOIMIMATON IDEA:
#uusiTuote = {"tuote" : input("Karkin nimi: "), "valmistaja" : input("Valmitajan nimi: ")}
#List.append(uusiTuote)
#-----LOPPUU Lisätään appendilla uusi tuote mukaan------------------- - Juurikin niin, eli yhden istunnon karkkikauppa! Nyt kuitenkin hauskuutan teitä vielä sillä, että, kun sain errorit ja sytax errorit pois, niin sain aikaan loputtoman luupin..., eli se ei siirrykään enää valikkoon uusien tuotteiden kysynnän jälkeen., vaan kysyy aina vain uusia...
PS: Onneksi hain opiskelemaan kirjanpitäjäksi, enkä tietojenkäsittelyä...
print("Uuden tuotteen lisäys karkkikauppaan. Anna pyydetyt tiedot:")
tuote = input("Karkin nimi: ")
valmistaja = input("Valmistajan nimi: ")
#parasta_ennen_pvm = input("Parasta ennen pvm: ")
#-----ALKAA Lisätään appendilla uusi tuote mukaaan-------------------
#koita lisata tuote nyt Listaan
uusiTuote = {"tuote" : input("Karkin nimi: "), "valmistaja" : input("Valmitajan nimi: ")}
List.append(uusiTuote)
#-----LOPPUU Lisätään appendilla uusi tuote mukaan------------------- - Olen miettinyt tätä nyt yön ja puoli päivää... ei aukea tämä appendilla haku 'ulkoa syötetyistä' tiedoista. Osaan kyllä käyttää appendia siten, kuten sitä yleisesti neuvotaan käyttämään, eli syötettävä tieto annetaan siinä samassa. Sain jossain kohtaa jo peräti syötettyä tuotteeksi 1:sen ja valmistajaksi 2:sen, eli taisin olla jo aika lähellä, mutta sitten onnistuin hukkaamaan sen ratkasun.
Onko missään ohjetta sille, kuinka haetaan ulkopuolinen syöttö appendilla??? - Kiitos jälleen! Kokeilen huomenna aamukahvin jälkeen näitä vinkkejä!