Suomi24 Keskustelussa on viikonlopun aikana ollut poikkeuksellisen paljon bottien automaattiseti luomia kommentteja. Pahoittelemme tästä aiheutunutta harmia. Olemme kiristäneet Keskustelujen suojausasetuksia ja kommentointi on toistaiseksi estetty ulkomailta.

Python: Dictionaryt Listin sisällä...

Hmmm, ERROR toisensa perään. Olen ymmärtänyt, että dictionaryt tehdään listin sisään, koska dictionaryihin 'säilöltyistä' tiedoista halutaan erotella osia erilleen myöhemmässä vaiheessa. En vain osaa asetella niitä tuonne koodin sekaan oikein. Miten tämä voi olla näin vaikeaa?

75

765

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Dictionary on oma objektinsa, ei niitä tarvitse laittaa listin sisään.
      Voit ajatella että dictionaryssä avain mäpätään tiettyyn arvoon eli se on niinkuin matemaattisessa mielessä funktio.

      Ota joku ihan yksinkertainen esimerkki. Luodaan dicti d ja asetetaan avaimen 'x' arvoksi 3

      d = {}
      d['x'] = 3

      Nyt avaimen 'x' arvo 3 saadaan koodilla

      d['x']

      Voit laittaa d:hen lisää avaimia ja näille arvoja mielin määrin. Jos asetat arvon avaimelle, joka on jo määritelty, edellinen arvo korvautuu.

      • Kiitos! Yritän miettiä tätä.


      • Minna-Elina kirjoitti:

        Kiitos! Yritän miettiä tätä.

        Kas... olen edennyt... Nyt onnistuu jo kaikki muu paitsi se, että ei tallenna uutta tuotetta, vaikka olen tehnyt sitä varten samaan kansioon Karkkikauppa.txt:n.

        Ei myöskään tulosta Karkkikaupassa olevia tuotteita (=Tulostaa pyydetyn karkin, jos se on karkkikaupassa), mitä hämmästelen. Olen yrittänyt siihen jo aivan kaikki variaatiot.

        #herkku1 = {”tuote”:”Fasu”, ”valmistaja”:”Fazer”}
        #herkku2 = {”tuote”:”Suukko”, ”valmistaja”:”Brunberg”}
        #herkku3 = {”tuote”:”Lakupala”, ”valmistaja”:”Panda”}

        List = [{"tuote":"Fasu", "valmistaja":"Fazer"},{"tuote":"Suukko", "valmistaja":"Brunberg"},{"tuote":"Lakupala", "valmistaja":"Panda"}]


        print("Uuden tuotteen lisäys karkkikauppaan. Anna pyydetyt tiedot:")
        tuote = input("Karkin nimi: ")
        valmistaja = input("Valmistajan nimi: ")
        #parasta_ennen_pvm = input("Parasta ennen pvm: ")

        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 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"])

        elif valinta in List: #Tulostaa pyydetyn karkin, jos se on karkkikaupassa.
        print(x[valinta])

        else:
        print("Syötteesi oli virheellinen, tai tätä karkkia ei ole tässä karkkikaupassa.")
        #Jos kirjoitat pienellä etukirjaimella Poistu, tai Kaikki, niin antaa silloinkin
        #tuon viimeisen printin: Syötteesi oli virheellinen...

        tiedosto.close() #Suljetaan tiedosto.


      • Anonyymi
        Minna-Elina kirjoitti:

        Kas... olen edennyt... Nyt onnistuu jo kaikki muu paitsi se, että ei tallenna uutta tuotetta, vaikka olen tehnyt sitä varten samaan kansioon Karkkikauppa.txt:n.

        Ei myöskään tulosta Karkkikaupassa olevia tuotteita (=Tulostaa pyydetyn karkin, jos se on karkkikaupassa), mitä hämmästelen. Olen yrittänyt siihen jo aivan kaikki variaatiot.

        #herkku1 = {”tuote”:”Fasu”, ”valmistaja”:”Fazer”}
        #herkku2 = {”tuote”:”Suukko”, ”valmistaja”:”Brunberg”}
        #herkku3 = {”tuote”:”Lakupala”, ”valmistaja”:”Panda”}

        List = [{"tuote":"Fasu", "valmistaja":"Fazer"},{"tuote":"Suukko", "valmistaja":"Brunberg"},{"tuote":"Lakupala", "valmistaja":"Panda"}]


        print("Uuden tuotteen lisäys karkkikauppaan. Anna pyydetyt tiedot:")
        tuote = input("Karkin nimi: ")
        valmistaja = input("Valmistajan nimi: ")
        #parasta_ennen_pvm = input("Parasta ennen pvm: ")

        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 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"])

        elif valinta in List: #Tulostaa pyydetyn karkin, jos se on karkkikaupassa.
        print(x[valinta])

        else:
        print("Syötteesi oli virheellinen, tai tätä karkkia ei ole tässä karkkikaupassa.")
        #Jos kirjoitat pienellä etukirjaimella Poistu, tai Kaikki, niin antaa silloinkin
        #tuon viimeisen printin: Syötteesi oli virheellinen...

        tiedosto.close() #Suljetaan tiedosto.

        Listaan lisätään appendilla. https://www.techbeamers.com/python-dictionary/


      • Minna-Elina kirjoitti:

        Kas... olen edennyt... Nyt onnistuu jo kaikki muu paitsi se, että ei tallenna uutta tuotetta, vaikka olen tehnyt sitä varten samaan kansioon Karkkikauppa.txt:n.

        Ei myöskään tulosta Karkkikaupassa olevia tuotteita (=Tulostaa pyydetyn karkin, jos se on karkkikaupassa), mitä hämmästelen. Olen yrittänyt siihen jo aivan kaikki variaatiot.

        #herkku1 = {”tuote”:”Fasu”, ”valmistaja”:”Fazer”}
        #herkku2 = {”tuote”:”Suukko”, ”valmistaja”:”Brunberg”}
        #herkku3 = {”tuote”:”Lakupala”, ”valmistaja”:”Panda”}

        List = [{"tuote":"Fasu", "valmistaja":"Fazer"},{"tuote":"Suukko", "valmistaja":"Brunberg"},{"tuote":"Lakupala", "valmistaja":"Panda"}]


        print("Uuden tuotteen lisäys karkkikauppaan. Anna pyydetyt tiedot:")
        tuote = input("Karkin nimi: ")
        valmistaja = input("Valmistajan nimi: ")
        #parasta_ennen_pvm = input("Parasta ennen pvm: ")

        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 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"])

        elif valinta in List: #Tulostaa pyydetyn karkin, jos se on karkkikaupassa.
        print(x[valinta])

        else:
        print("Syötteesi oli virheellinen, tai tätä karkkia ei ole tässä karkkikaupassa.")
        #Jos kirjoitat pienellä etukirjaimella Poistu, tai Kaikki, niin antaa silloinkin
        #tuon viimeisen printin: Syötteesi oli virheellinen...

        tiedosto.close() #Suljetaan tiedosto.

        Mainiota!
        Joo, virheellisyys löytyy riviltä

        elif valinta in List:

        valinta on tuotteen nimi ja List sisältää dict:ejä, joten sitä onko valinta List:ssa ei voi tehdä ihan noin. Sinun pitää käydä läpi kaikki List:n objektit (dict:it) ja kysyä jokaisesta, onko siinä avaimen tuote arvo valinta.
        Onko oman funktion tekeminen (tyyliin def munFun(par1):) sinulle tuttua?
        Minä muokkasin koodia vähän. Lisäsin kaksi funktiota: onkoTuotetta testaa löytyykö annettu tuote List:sta ja getTuote palauttaa sen. Näille annetaan siis parametrinä tuotteen nimi.
        Koodini löytyy täältä: https://repl.it/@minkkilaukku2/karkkikauppa2


      • minkkilaukku kirjoitti:

        Mainiota!
        Joo, virheellisyys löytyy riviltä

        elif valinta in List:

        valinta on tuotteen nimi ja List sisältää dict:ejä, joten sitä onko valinta List:ssa ei voi tehdä ihan noin. Sinun pitää käydä läpi kaikki List:n objektit (dict:it) ja kysyä jokaisesta, onko siinä avaimen tuote arvo valinta.
        Onko oman funktion tekeminen (tyyliin def munFun(par1):) sinulle tuttua?
        Minä muokkasin koodia vähän. Lisäsin kaksi funktiota: onkoTuotetta testaa löytyykö annettu tuote List:sta ja getTuote palauttaa sen. Näille annetaan siis parametrinä tuotteen nimi.
        Koodini löytyy täältä: https://repl.it/@minkkilaukku2/karkkikauppa2

        Ai niin ja sen uuden (käyttäjän luoman) tuotteen lisääminen List:aan, annoin tuolla vähän siihenkin vinkkiä. Joku jo mainitisikin että appendillahan se menee.

        Sitten, jos haluat tiedostoon tallentaa noita tuotteita enemmänkin, niin ne kannattaa jotenkin hyvässä muodossa laittaa, josta on sitten helppo lukea.
        Tuohan jo tallentaa sen annetun nimen ja valmistajan omille riveilleen tiedostoon, mutta sinähän et tuossa vielä lue tiedostosta tuotteita vaan ne on "kovakoodattu" itse lähdekoodiin. Tosiaan, mieti miten tallentaisit tuotteen tiedostoon ja sitten lukisit sen sieltä ja lisäät List:aan.


      • minkkilaukku kirjoitti:

        Mainiota!
        Joo, virheellisyys löytyy riviltä

        elif valinta in List:

        valinta on tuotteen nimi ja List sisältää dict:ejä, joten sitä onko valinta List:ssa ei voi tehdä ihan noin. Sinun pitää käydä läpi kaikki List:n objektit (dict:it) ja kysyä jokaisesta, onko siinä avaimen tuote arvo valinta.
        Onko oman funktion tekeminen (tyyliin def munFun(par1):) sinulle tuttua?
        Minä muokkasin koodia vähän. Lisäsin kaksi funktiota: onkoTuotetta testaa löytyykö annettu tuote List:sta ja getTuote palauttaa sen. Näille annetaan siis parametrinä tuotteen nimi.
        Koodini löytyy täältä: https://repl.it/@minkkilaukku2/karkkikauppa2

        Kiitos jälleen! Kokeilen huomenna aamukahvin jälkeen näitä vinkkejä!


      • minkkilaukku kirjoitti:

        Ai niin ja sen uuden (käyttäjän luoman) tuotteen lisääminen List:aan, annoin tuolla vähän siihenkin vinkkiä. Joku jo mainitisikin että appendillahan se menee.

        Sitten, jos haluat tiedostoon tallentaa noita tuotteita enemmänkin, niin ne kannattaa jotenkin hyvässä muodossa laittaa, josta on sitten helppo lukea.
        Tuohan jo tallentaa sen annetun nimen ja valmistajan omille riveilleen tiedostoon, mutta sinähän et tuossa vielä lue tiedostosta tuotteita vaan ne on "kovakoodattu" itse lähdekoodiin. Tosiaan, mieti miten tallentaisit tuotteen tiedostoon ja sitten lukisit sen sieltä ja lisäät List:aan.

        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???


      • Minna-Elina kirjoitti:

        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???

        Kun olet lukenut käyttäjän antamat tuotteen nimen ja valmistajan, niin sinun täytyy lisätä tämä tuote tuohon List-nimiseen listaan joka sinulla on.
        Olet saanut käyttäjältä tiedot

        tuote = input("Karkin nimi: ")
        valmistaja = input("Valmistajan nimi: ")

        Nyt voit luoda uuden tuotteen (eli dict:n niinkuin olet päättänyt tuotteita mallintaa) ja sitten lisätä sen listaan.
        Vinkki:
        uusituote = {} #laita tiedot tuote ja valmistaja tuonne sisälle
        List.append(uusituote) #lisää uusi tuote listaan

        Suosittelisin nyt aluksi unohtamaan tuon tiedostoon tallentamisen ja sieltä lukemisen ja aluksi keskittymään vain tuohon että saat ohjelman toimimaan siten, että samalla ajokerralla syötetyt tuotteet saadaan tulostettua. (Jos halutaan, että tuotteet säilyy muistissa, kun ohjelma sammutetaan ja ajetaan uudelleen, niin sittenhän ne on tallennettava tiedostoon ja luettava sieltä.)


      • minkkilaukku kirjoitti:

        Kun olet lukenut käyttäjän antamat tuotteen nimen ja valmistajan, niin sinun täytyy lisätä tämä tuote tuohon List-nimiseen listaan joka sinulla on.
        Olet saanut käyttäjältä tiedot

        tuote = input("Karkin nimi: ")
        valmistaja = input("Valmistajan nimi: ")

        Nyt voit luoda uuden tuotteen (eli dict:n niinkuin olet päättänyt tuotteita mallintaa) ja sitten lisätä sen listaan.
        Vinkki:
        uusituote = {} #laita tiedot tuote ja valmistaja tuonne sisälle
        List.append(uusituote) #lisää uusi tuote listaan

        Suosittelisin nyt aluksi unohtamaan tuon tiedostoon tallentamisen ja sieltä lukemisen ja aluksi keskittymään vain tuohon että saat ohjelman toimimaan siten, että samalla ajokerralla syötetyt tuotteet saadaan tulostettua. (Jos halutaan, että tuotteet säilyy muistissa, kun ohjelma sammutetaan ja ajetaan uudelleen, niin sittenhän ne on tallennettava tiedostoon ja luettava sieltä.)

        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-------------------


      • Minna-Elina kirjoitti:

        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-------------------

        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-------------------


      • Minna-Elina kirjoitti:

        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-------------------

        uusiTuote = {"tuote" : input("Karkin nimi: "), "valmistaja" : input("Valmitajan nimi: ")}
        List.append(uusiTuote)

        Kyllä tuonkin pitäisi toimia

        Päivitin tuonne replittiin sen uuden luonnin muodossa

        uusiTuote = {"tuote": tuote, "valmistaja": valmistaja}
        List.append(uusiTuote)

        kun ne tuote ja valmistaja on jo kysytty ja laitettu muuttuujiin, mutta tosiaan pitäisihän se onnistua noinkin, että input():it on suoraan tuolla sisällä eikä muuttujia tuote ja valmistaja tarvita.


      • minkkilaukku kirjoitti:

        uusiTuote = {"tuote" : input("Karkin nimi: "), "valmistaja" : input("Valmitajan nimi: ")}
        List.append(uusiTuote)

        Kyllä tuonkin pitäisi toimia

        Päivitin tuonne replittiin sen uuden luonnin muodossa

        uusiTuote = {"tuote": tuote, "valmistaja": valmistaja}
        List.append(uusiTuote)

        kun ne tuote ja valmistaja on jo kysytty ja laitettu muuttuujiin, mutta tosiaan pitäisihän se onnistua noinkin, että input():it on suoraan tuolla sisällä eikä muuttujia tuote ja valmistaja tarvita.

        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!


      • Minna-Elina kirjoitti:

        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!

        Eipä kestä :D. Joo, se on varmaan jokaiselle koodarille tullut joskus vastaan tuo "debuggauksen ihanuus". Mutta eristämällä tilanteen ja kokeilemalla mahdollisimman yksinkertaista tapausta, niin asiat usein selkenee.


      • minkkilaukku kirjoitti:

        Eipä kestä :D. Joo, se on varmaan jokaiselle koodarille tullut joskus vastaan tuo "debuggauksen ihanuus". Mutta eristämällä tilanteen ja kokeilemalla mahdollisimman yksinkertaista tapausta, niin asiat usein selkenee.

        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.")


      • Minna-Elina kirjoitti:

        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.")

        Siinä käy sama homma kuin karkin etsimisessä: remove_List on karkin nimi. Eli kun karkki on dicti {"tuote": "nimi", "valmistaja": "joku"}, niin tuo remove-funktio ei osaa poistaa karkkia kun sille antaa karkin nimen. Sinun pitää antaa sille se kyseinen dicti, joka on se karkki.

        Vinkki: voit käyttää funktiota getKarkki ensin etsimään oikean karkin. Tai vaihtoehtoisesti tee oma uusi funktio poistaKarkki (katso mallia funktiosta getKarkki).


      • minkkilaukku kirjoitti:

        Siinä käy sama homma kuin karkin etsimisessä: remove_List on karkin nimi. Eli kun karkki on dicti {"tuote": "nimi", "valmistaja": "joku"}, niin tuo remove-funktio ei osaa poistaa karkkia kun sille antaa karkin nimen. Sinun pitää antaa sille se kyseinen dicti, joka on se karkki.

        Vinkki: voit käyttää funktiota getKarkki ensin etsimään oikean karkin. Tai vaihtoehtoisesti tee oma uusi funktio poistaKarkki (katso mallia funktiosta getKarkki).

        Asiaa voisi havainnolistaa ihan puhtaalta pöydältä näin:

        a = [{"k": 1}, {"k": 2}]
        print (1 in a) #False, koska luku 1 ei ole a:ssa (siellä on dicti, jossa ykkönen on avaimen "k" takana)
        print ({"k": 1} in a) #True: dicti-objekti löytyy


      • Anonyymi
        Minna-Elina kirjoitti:

        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.")

        Tuossa linkissä muutama tapa poistaa dictionary listalta.

        https://www.geeksforgeeks.org/python-removing-dictionary-from-list-of-dictionaries/


      • Anonyymi
        Minna-Elina kirjoitti:

        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.")

        Tuossa linkissä muutama tapa poistaa dictionary listalta.

        https://www.geeksforgeeks.org/python-removing-dictionary-from-list-of-dictionaries/


      • Anonyymi
        Minna-Elina kirjoitti:

        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.")

        Tuossa linkissä muutama tapa poistaa dictionary listalta.

        https://www.geeksforgeeks.org/python-removing-dictionary-from-list-of-dictionaries/


      • minkkilaukku kirjoitti:

        Siinä käy sama homma kuin karkin etsimisessä: remove_List on karkin nimi. Eli kun karkki on dicti {"tuote": "nimi", "valmistaja": "joku"}, niin tuo remove-funktio ei osaa poistaa karkkia kun sille antaa karkin nimen. Sinun pitää antaa sille se kyseinen dicti, joka on se karkki.

        Vinkki: voit käyttää funktiota getKarkki ensin etsimään oikean karkin. Tai vaihtoehtoisesti tee oma uusi funktio poistaKarkki (katso mallia funktiosta getKarkki).

        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))



      • Minna-Elina kirjoitti:

        Tuota pitää varmaan katsoa uusin silmin huomenna, kiitos!

        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))


      • Minna-Elina kirjoitti:

        Tuota pitää varmaan katsoa uusin silmin huomenna, kiitos!

        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))


      • Anonyymi
        Minna-Elina kirjoitti:

        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))

        Sinullahan oli tuolla ylempänä jo koodi

        print("Minkä karkin haluat poistaa? ")
        remove_List = input ()

        Se taisi nyt unohtua. Eli sinun pitää kysyä käyttäjältä minkä nimisen karkin hän haluaa poistaa. Se nimi mene sitten ???:n paikalle.


      • Anonyymi
        Minna-Elina kirjoitti:

        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))

        Laita kysymysmerkkien kohdalle se mikä halutaan poistaa.

        Muuttujien nimeämisestä sen verran, ettei List ole hyvä. Isolla alkukirjaimilla viitataan yleensä luokkien nimiin. Ja list (pienellä kirjaimella) on taas varattu sana.

        Nykyään käytetään nimeämisessä aika usein "CamelCasea", joissa eri sanat erotellaan isolla kirjaimella. Hyvä listamuuttujan nimi voisi olla tässä yhteydessä vaikkapa "candyList", tai namuLista, jos haluaa käyttää suomenkielisiä nimiä.

        Näyttäisi tosin joku neuvovan Pythonissa käyttämään muuttujissa pieniä kirjaimia ja alaviivaa, ja luokkien nimissä isolla alkukirjaimella CamelCasea. Silloin listan nimi saattaisi olla candy_list tai namu_lista.

        https://namingconvention.org/python/


      • Anonyymi kirjoitti:

        Sinullahan oli tuolla ylempänä jo koodi

        print("Minkä karkin haluat poistaa? ")
        remove_List = input ()

        Se taisi nyt unohtua. Eli sinun pitää kysyä käyttäjältä minkä nimisen karkin hän haluaa poistaa. Se nimi mene sitten ???:n paikalle.

        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


      • minkkilaukku kirjoitti:

        Siinä käy sama homma kuin karkin etsimisessä: remove_List on karkin nimi. Eli kun karkki on dicti {"tuote": "nimi", "valmistaja": "joku"}, niin tuo remove-funktio ei osaa poistaa karkkia kun sille antaa karkin nimen. Sinun pitää antaa sille se kyseinen dicti, joka on se karkki.

        Vinkki: voit käyttää funktiota getKarkki ensin etsimään oikean karkin. Tai vaihtoehtoisesti tee oma uusi funktio poistaKarkki (katso mallia funktiosta getKarkki).

        En saa tuota def getTuote(tuote) ja def deleteTuote(tuote):tta 'naitettua' yhteen, jotta onnistuisin karkin poistossa, vaikka teen mitä! Nyt tarvitaan Minkkilaukun taikoja...


      • Minna-Elina kirjoitti:

        En saa tuota def getTuote(tuote) ja def deleteTuote(tuote):tta 'naitettua' yhteen, jotta onnistuisin karkin poistossa, vaikka teen mitä! Nyt tarvitaan Minkkilaukun taikoja...

        Kyllä se pitäisi toimia tuolla koodilla joka sinulla jo oli (tuote kysytään käyttäjältä ja sitten laitat näin saadun nimen tuohon poistokoodiin oikeaan kohtaan). Kokeilinkin tuota jo aiemmin, mutta se meni näköjään uuteen versioon tuonne Replittiin: https://repl.it/@minkkilaukku2/karkkikauppa2-2

        Toinen tapa olisi jotakuinkin näin:

        t = getTuote(poistettava) #tämä antaa dictin tai None, jos ei löydy
        if t: List.remove(t)


      • minkkilaukku kirjoitti:

        Kyllä se pitäisi toimia tuolla koodilla joka sinulla jo oli (tuote kysytään käyttäjältä ja sitten laitat näin saadun nimen tuohon poistokoodiin oikeaan kohtaan). Kokeilinkin tuota jo aiemmin, mutta se meni näköjään uuteen versioon tuonne Replittiin: https://repl.it/@minkkilaukku2/karkkikauppa2-2

        Toinen tapa olisi jotakuinkin näin:

        t = getTuote(poistettava) #tämä antaa dictin tai None, jos ei löydy
        if t: List.remove(t)

        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


      • Minna-Elina kirjoitti:

        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

        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.


      • Anonyymi
        Minna-Elina kirjoitti:

        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.

        Huomaa arvoluetteloiden määrittelyerot:
        a = {'avain1': 'arvo1'} #Tämä on sanakirja-tyyppinen arvoluettelo {}.
        b = ('avain1', 'arvo1') #Tämä on tuple-tyyppinen arvoluettelo ().
        c = ['avain1', 'arvo1'] #Tämä on lista-tyyppinen arvoluettelo [].

        Vertaa sitä omaasi:
        List = [{"tuote":"Fasu", "valmistaja":"Fazer"},{"tuote":"Suukko", "valmistaja":"Brunberg"},{"tuote":"Lakupala", "valmistaja":"Panda"}]

        Miksi määrittelet sen noin?


      • Anonyymi
        Anonyymi kirjoitti:

        Huomaa arvoluetteloiden määrittelyerot:
        a = {'avain1': 'arvo1'} #Tämä on sanakirja-tyyppinen arvoluettelo {}.
        b = ('avain1', 'arvo1') #Tämä on tuple-tyyppinen arvoluettelo ().
        c = ['avain1', 'arvo1'] #Tämä on lista-tyyppinen arvoluettelo [].

        Vertaa sitä omaasi:
        List = [{"tuote":"Fasu", "valmistaja":"Fazer"},{"tuote":"Suukko", "valmistaja":"Brunberg"},{"tuote":"Lakupala", "valmistaja":"Panda"}]

        Miksi määrittelet sen noin?

        ESIMERKKI NO:1
        Tallennetaan levylle sanakirja-tyyppinen (eng. Dictionary) arvoluettelo:

        #!/usr/bin/env python3
        # -*- coding: utf-8 -*-

        import pickle

        FileName='List.txt'
        List={'Fasu': 'Fazer', 'Suukko': 'Brunberg'}

        with open(FileName, 'wb') as f:
        pickle.dump(List, f)


      • Anonyymi
        Anonyymi kirjoitti:

        ESIMERKKI NO:1
        Tallennetaan levylle sanakirja-tyyppinen (eng. Dictionary) arvoluettelo:

        #!/usr/bin/env python3
        # -*- coding: utf-8 -*-

        import pickle

        FileName='List.txt'
        List={'Fasu': 'Fazer', 'Suukko': 'Brunberg'}

        with open(FileName, 'wb') as f:
        pickle.dump(List, f)

        ESIMERKKI NO:2
        Luetaan levyltä sanakirja-tyyppinen (eng. Dictionary) arvoluettelo:

        #!/usr/bin/env python3
        # -*- coding: utf-8 -*-

        import pickle

        FileName="List.txt"
        List={}

        with open(FileName, 'rb') as f:
        List = pickle.load(f)


      • Anonyymi
        Anonyymi kirjoitti:

        ESIMERKKI NO:2
        Luetaan levyltä sanakirja-tyyppinen (eng. Dictionary) arvoluettelo:

        #!/usr/bin/env python3
        # -*- coding: utf-8 -*-

        import pickle

        FileName="List.txt"
        List={}

        with open(FileName, 'rb') as f:
        List = pickle.load(f)

        ESIMERKKI NO:3
        Lisätään uusi avain ja arvo sanakirja-tyyppiseen (eng. Dictionary) arvoluetteloon:

        #!/usr/bin/env python3
        # -*- coding: utf-8 -*-

        List={'Fasu': 'Fazer', 'Suukko': 'Brunberg'}

        List.update( Marianne = 'Fazer' )
        print( List )


      • Anonyymi
        Anonyymi kirjoitti:

        ESIMERKKI NO:3
        Lisätään uusi avain ja arvo sanakirja-tyyppiseen (eng. Dictionary) arvoluetteloon:

        #!/usr/bin/env python3
        # -*- coding: utf-8 -*-

        List={'Fasu': 'Fazer', 'Suukko': 'Brunberg'}

        List.update( Marianne = 'Fazer' )
        print( List )

        ESIMERKKI NO:4
        Lisätään uusi avain ja arvo sanakirja-tyyppiseen (eng. Dictionary) arvoluetteloon muuttujien välityksellä:

        #!/usr/bin/env python3
        # -*- coding: utf-8 -*-

        List={'Fasu': 'Fazer', 'Suukko': 'Brunberg'}

        Valmistaja='Oy Halva Ab'; Makeinen='Salmiakkiruutu'

        List.update({ Makeinen : Valmistaja })
        print( List )


      • Anonyymi
        Anonyymi kirjoitti:

        ESIMERKKI NO:4
        Lisätään uusi avain ja arvo sanakirja-tyyppiseen (eng. Dictionary) arvoluetteloon muuttujien välityksellä:

        #!/usr/bin/env python3
        # -*- coding: utf-8 -*-

        List={'Fasu': 'Fazer', 'Suukko': 'Brunberg'}

        Valmistaja='Oy Halva Ab'; Makeinen='Salmiakkiruutu'

        List.update({ Makeinen : Valmistaja })
        print( List )

        ESIMERKKI NO:5
        Vaihdetaan avaimen arvo sanakirja-tyyppisessä (eng. Dictionary) arvoluettelossa:
        #!/usr/bin/env python3
        # -*- coding: utf-8 -*-

        List={'Fasu': 'Fazer', 'Suukko': 'Brunberg'}

        List.update({'Fasu': 'Lakumesta Oy'})
        print( List )


      • Anonyymi
        Anonyymi kirjoitti:

        ESIMERKKI NO:5
        Vaihdetaan avaimen arvo sanakirja-tyyppisessä (eng. Dictionary) arvoluettelossa:
        #!/usr/bin/env python3
        # -*- coding: utf-8 -*-

        List={'Fasu': 'Fazer', 'Suukko': 'Brunberg'}

        List.update({'Fasu': 'Lakumesta Oy'})
        print( List )

        ESIMERKKI NO:6
        Vaihdetaan nimetty arvo kaikilta avaimilta, sanakirja-tyyppisessä (eng. Dictionary) arvoluettelossa:

        #!/usr/bin/env python3
        # -*- coding: utf-8 -*-

        List={'Fasu': 'Fazer', 'Suukko': 'Panda', "Purukumi": "Fazer", "Lakupala": "Lakumesta Oy"}

        for key in List:
        if List[key] == 'Fazer':
        List.update({key: "Lakumesta Oy"})

        print( List )


      • Anonyymi
        Anonyymi kirjoitti:

        ESIMERKKI NO:6
        Vaihdetaan nimetty arvo kaikilta avaimilta, sanakirja-tyyppisessä (eng. Dictionary) arvoluettelossa:

        #!/usr/bin/env python3
        # -*- coding: utf-8 -*-

        List={'Fasu': 'Fazer', 'Suukko': 'Panda', "Purukumi": "Fazer", "Lakupala": "Lakumesta Oy"}

        for key in List:
        if List[key] == 'Fazer':
        List.update({key: "Lakumesta Oy"})

        print( List )

        ESIMERKKI NO:7
        Poistetaan viimmeksi lisätty avain ja arvo sanakirja-tyyppisetä (eng. Dictionary) arvoluettelosta:

        #!/usr/bin/env python3
        # -*- coding: utf-8 -*-

        List={'Fasu': 'Fazer', 'Suukko': 'Panda', "Purukumi": "Fazer", "Lakupala": "Lakumesta Oy"}

        List.popitem()
        print( List )


      • Anonyymi
        Anonyymi kirjoitti:

        ESIMERKKI NO:7
        Poistetaan viimmeksi lisätty avain ja arvo sanakirja-tyyppisetä (eng. Dictionary) arvoluettelosta:

        #!/usr/bin/env python3
        # -*- coding: utf-8 -*-

        List={'Fasu': 'Fazer', 'Suukko': 'Panda', "Purukumi": "Fazer", "Lakupala": "Lakumesta Oy"}

        List.popitem()
        print( List )

        ESIMERKKI NO:8
        Poistetaan määrätty avain ja arvo sanakirja-tyyppisetä (eng. Dictionary) arvoluettelosta:

        #!/usr/bin/env python3
        # -*- coding: utf-8 -*-

        List={'Fasu': 'Fazer', 'Suukko': 'Panda', "Purukumi": "Fazer", "Lakupala": "Lakumesta Oy"}

        List.pop( 'Fasu' )
        print( List )


      • Anonyymi
        Anonyymi kirjoitti:

        ESIMERKKI NO:8
        Poistetaan määrätty avain ja arvo sanakirja-tyyppisetä (eng. Dictionary) arvoluettelosta:

        #!/usr/bin/env python3
        # -*- coding: utf-8 -*-

        List={'Fasu': 'Fazer', 'Suukko': 'Panda', "Purukumi": "Fazer", "Lakupala": "Lakumesta Oy"}

        List.pop( 'Fasu' )
        print( List )

        ESIMERKKI NO:9
        Poistetaan käyttäjän määrittämä 'tuoete' sanakirja-tyyppisetä (eng. Dictionary) arvoluettelosta:

        #!/usr/bin/env python3
        # -*- coding: utf-8 -*-

        List={'Fasu': 'Fazer', 'Suukko': 'Panda', "Purukumi": "Fazer", "Lakupala": "Lakumesta Oy"}

        while True:
        print( '\nMinkä näistä haluat poistaa?')
        for key in List: print( key )
        try: List.pop( input() )
        except KeyError as error:
        break


      • Anonyymi

        ESIMERKKI NO:11
        Tulostetaan kaikki 'tuotteet', sanakirja-tyyppisestä (eng. Dictionary) arvoluettelosta:

        #!/usr/bin/env python3
        # -*- coding: utf-8 -*-

        List={'Fasu': 'Fazer', 'Suukko': 'Panda', "Purukumi": "Fazer", "Lakupala": "Lakumesta Oy"}

        for key in List:
        print( key )


      • Anonyymi
        Anonyymi kirjoitti:

        ESIMERKKI NO:11
        Tulostetaan kaikki 'tuotteet', sanakirja-tyyppisestä (eng. Dictionary) arvoluettelosta:

        #!/usr/bin/env python3
        # -*- coding: utf-8 -*-

        List={'Fasu': 'Fazer', 'Suukko': 'Panda', "Purukumi": "Fazer", "Lakupala": "Lakumesta Oy"}

        for key in List:
        print( key )

        ESIMERKKI NO:12
        Tulostetaan kaikki 'tuotteet' listana, sanakirja-tyyppisestä (eng. Dictionary) arvoluettelosta:

        #!/usr/bin/env python3
        # -*- coding: utf-8 -*-

        List={'Fasu': 'Fazer', 'Suukko': 'Panda', "Purukumi": "Fazer", "Lakupala": "Lakumesta Oy"}

        print( List.keys() )


      • Anonyymi
        Anonyymi kirjoitti:

        ESIMERKKI NO:12
        Tulostetaan kaikki 'tuotteet' listana, sanakirja-tyyppisestä (eng. Dictionary) arvoluettelosta:

        #!/usr/bin/env python3
        # -*- coding: utf-8 -*-

        List={'Fasu': 'Fazer', 'Suukko': 'Panda', "Purukumi": "Fazer", "Lakupala": "Lakumesta Oy"}

        print( List.keys() )

        ESIMERKKI NO:13
        Tulostetaan kaikki 'valmistajat', sanakirja-tyyppisestä (eng. Dictionary) arvoluettelosta:

        #!/usr/bin/env python3
        # -*- coding: utf-8 -*-

        List={'Fasu': 'Fazer', 'Suukko': 'Panda', "Purukumi": "Fazer", "Lakupala": "Lakumesta Oy"}

        for key in List:
        print( List[key] )


      • Anonyymi
        Anonyymi kirjoitti:

        ESIMERKKI NO:13
        Tulostetaan kaikki 'valmistajat', sanakirja-tyyppisestä (eng. Dictionary) arvoluettelosta:

        #!/usr/bin/env python3
        # -*- coding: utf-8 -*-

        List={'Fasu': 'Fazer', 'Suukko': 'Panda', "Purukumi": "Fazer", "Lakupala": "Lakumesta Oy"}

        for key in List:
        print( List[key] )

        ESIMERKKI NO:14
        Tulostetaan kaikki 'valmistajat', sanakirja-tyyppisestä (eng. Dictionary) arvoluettelosta:

        #!/usr/bin/env python3
        # -*- coding: utf-8 -*-

        List={'Fasu': 'Fazer', 'Suukko': 'Panda', "Purukumi": "Fazer", "Lakupala": "Lakumesta Oy"}

        for value in List.values():
        print( value )


      • Anonyymi
        Anonyymi kirjoitti:

        ESIMERKKI NO:14
        Tulostetaan kaikki 'valmistajat', sanakirja-tyyppisestä (eng. Dictionary) arvoluettelosta:

        #!/usr/bin/env python3
        # -*- coding: utf-8 -*-

        List={'Fasu': 'Fazer', 'Suukko': 'Panda', "Purukumi": "Fazer", "Lakupala": "Lakumesta Oy"}

        for value in List.values():
        print( value )

        ESIMERKKI NO:15
        Tulostetaan kaikki 'valmistajat' listana, sanakirja-tyyppisestä (eng. Dictionary) arvoluettelosta:

        #!/usr/bin/env python3
        # -*- coding: utf-8 -*-

        List={'Fasu': 'Fazer', 'Suukko': 'Panda', "Purukumi": "Fazer", "Lakupala": "Lakumesta Oy"}

        print( List.values() )


      • Anonyymi
        Anonyymi kirjoitti:

        ESIMERKKI NO:15
        Tulostetaan kaikki 'valmistajat' listana, sanakirja-tyyppisestä (eng. Dictionary) arvoluettelosta:

        #!/usr/bin/env python3
        # -*- coding: utf-8 -*-

        List={'Fasu': 'Fazer', 'Suukko': 'Panda', "Purukumi": "Fazer", "Lakupala": "Lakumesta Oy"}

        print( List.values() )

        ESIMERKKI NO:16
        Tulostetaan kaikki 'valmistajat' ja 'tuotteet' väritettynä, sanakirja-tyyppisestä (eng. Dictionary) arvoluettelosta:

        #!/usr/bin/env python3
        # -*- coding: utf-8 -*-

        List={'Fasu': 'Fazer', 'Suukko': 'Panda', "Purukumi": "Fazer", "Lakupala": "Lakumesta Oy"}

        for key in List:
        print('\033[94m' '\033[1m' key '\033[0m', '\033[93m' List[key] '\033[0m')


      • Anonyymi
        Anonyymi kirjoitti:

        ESIMERKKI NO:16
        Tulostetaan kaikki 'valmistajat' ja 'tuotteet' väritettynä, sanakirja-tyyppisestä (eng. Dictionary) arvoluettelosta:

        #!/usr/bin/env python3
        # -*- coding: utf-8 -*-

        List={'Fasu': 'Fazer', 'Suukko': 'Panda', "Purukumi": "Fazer", "Lakupala": "Lakumesta Oy"}

        for key in List:
        print('\033[94m' '\033[1m' key '\033[0m', '\033[93m' List[key] '\033[0m')

        ESIMERKKI NO:17
        Montako Fazerin tuotetta, sanakirja-tyyppisessä (eng. Dictionary) arvoluettelossa:

        #!/usr/bin/env python3
        # -*- coding: utf-8 -*-

        List={'Fasu': 'Fazer', 'Suukko': 'Panda', "Purukumi": "Fazer", "Lakupala": "Lakumesta Oy"}

        Count=0
        for key in List:
        if List[key] == 'Fazer':
        Count = 1

        print( str(Count) )


      • Anonyymi
        Anonyymi kirjoitti:

        ESIMERKKI NO:17
        Montako Fazerin tuotetta, sanakirja-tyyppisessä (eng. Dictionary) arvoluettelossa:

        #!/usr/bin/env python3
        # -*- coding: utf-8 -*-

        List={'Fasu': 'Fazer', 'Suukko': 'Panda', "Purukumi": "Fazer", "Lakupala": "Lakumesta Oy"}

        Count=0
        for key in List:
        if List[key] == 'Fazer':
        Count = 1

        print( str(Count) )

        ESIMERKKI NO:18
        Onko 'Fazer valmistaja' sanakirja-tyyppisessä (eng. Dictionary) arvoluettelossa:

        #!/usr/bin/env python3
        # -*- coding: utf-8 -*-

        List={'Fasu': 'Fazer', 'Suukko': 'Panda', "Purukumi": "Fazer", "Lakupala": "Lakumesta Oy"}

        if "Fazer" in List.values():
        print("Kyllä, 'Fazer' on listalla.")


      • Anonyymi
        Anonyymi kirjoitti:

        ESIMERKKI NO:18
        Onko 'Fazer valmistaja' sanakirja-tyyppisessä (eng. Dictionary) arvoluettelossa:

        #!/usr/bin/env python3
        # -*- coding: utf-8 -*-

        List={'Fasu': 'Fazer', 'Suukko': 'Panda', "Purukumi": "Fazer", "Lakupala": "Lakumesta Oy"}

        if "Fazer" in List.values():
        print("Kyllä, 'Fazer' on listalla.")

        ESIMERKKI NO:19
        Onko 'Purukumi tuote' sanakirja-tyyppisessä (eng. Dictionary) arvoluettelossa:

        #!/usr/bin/env python3
        # -*- coding: utf-8 -*-

        List={'Fasu': 'Fazer', 'Suukko': 'Panda', "Purukumi": "Fazer", "Lakupala": "Lakumesta Oy"}

        if "Purukumi" in List.keys():
        print("Kyllä, 'Purukumi' on listalla.")


      • Anonyymi
        Anonyymi kirjoitti:

        ESIMERKKI NO:19
        Onko 'Purukumi tuote' sanakirja-tyyppisessä (eng. Dictionary) arvoluettelossa:

        #!/usr/bin/env python3
        # -*- coding: utf-8 -*-

        List={'Fasu': 'Fazer', 'Suukko': 'Panda', "Purukumi": "Fazer", "Lakupala": "Lakumesta Oy"}

        if "Purukumi" in List.keys():
        print("Kyllä, 'Purukumi' on listalla.")

        Vieläköhän jäi jotain epäselväksi ?
        Osassa oli tulosteen väritys mukana, joka toi ylimääräistä koodia, mutta näyttää hyvältä komentokehotteessa.


      • Anonyymi kirjoitti:

        ESIMERKKI NO:1
        Tallennetaan levylle sanakirja-tyyppinen (eng. Dictionary) arvoluettelo:

        #!/usr/bin/env python3
        # -*- coding: utf-8 -*-

        import pickle

        FileName='List.txt'
        List={'Fasu': 'Fazer', 'Suukko': 'Brunberg'}

        with open(FileName, 'wb') as f:
        pickle.dump(List, f)

        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...


      • Anonyymi
        Minna-Elina kirjoitti:

        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...

        #!/usr/bin/env python3
        # -*- coding: utf-8 -*-
        import os, time

        menu = {
        '1':'Lisää karkki luetteloon.',
        '2':'Poista karkki luettelosta.',
        '3':'Tulosta karkkiluettelo.',
        '4':'Poistu ohjelmasta'}

        def LisääNamu(): os.system('clear'); print('Karkin lisäys'); time.sleep(1)
        def PoistaNamu(): os.system('clear'); print('Karkin poisto'); time.sleep(1)
        def TulostaNamu(): os.system('clear'); print('Karkien tulostus'); time.sleep(1)

        while True:
        options=menu.keys()
        os.system('clear')
        for entry in options: print( entry, menu[entry] )
        selection=input("\nValintasi 1..4:");
        if selection =='1': LisääNamu()
        elif selection == '2': PoistaNamu()
        elif selection == '3': TulostaNamu()
        elif selection == '4': break
        else: print( "Tuntematon valinta!" )

        Kyllä minä olen sitä mieltä että sinun on pantava tuo ohjelmasi remonttiin alusta lähtien, se menee niin sekavaksi ja vaikeasti tulkittavaksi, ettei sillä ole tulevaisuutta. Tässä on esimerkki valikosta, koitapas onnistuuko tällä. Funktiot tekevät ne tehtävät, eivätkä ole valikon selkeätä rakennetta sotkemassa, näin on parempi.


      • Anonyymi
        Anonyymi kirjoitti:

        #!/usr/bin/env python3
        # -*- coding: utf-8 -*-
        import os, time

        menu = {
        '1':'Lisää karkki luetteloon.',
        '2':'Poista karkki luettelosta.',
        '3':'Tulosta karkkiluettelo.',
        '4':'Poistu ohjelmasta'}

        def LisääNamu(): os.system('clear'); print('Karkin lisäys'); time.sleep(1)
        def PoistaNamu(): os.system('clear'); print('Karkin poisto'); time.sleep(1)
        def TulostaNamu(): os.system('clear'); print('Karkien tulostus'); time.sleep(1)

        while True:
        options=menu.keys()
        os.system('clear')
        for entry in options: print( entry, menu[entry] )
        selection=input("\nValintasi 1..4:");
        if selection =='1': LisääNamu()
        elif selection == '2': PoistaNamu()
        elif selection == '3': TulostaNamu()
        elif selection == '4': break
        else: print( "Tuntematon valinta!" )

        Kyllä minä olen sitä mieltä että sinun on pantava tuo ohjelmasi remonttiin alusta lähtien, se menee niin sekavaksi ja vaikeasti tulkittavaksi, ettei sillä ole tulevaisuutta. Tässä on esimerkki valikosta, koitapas onnistuuko tällä. Funktiot tekevät ne tehtävät, eivätkä ole valikon selkeätä rakennetta sotkemassa, näin on parempi.

        Poistivat kuvan, toivottavasti saat (while) silmukan sisennykset tehtyä ilman kuvaa.


      • Minna-Elina kirjoitti:

        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...

        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ä...


      • Anonyymi
        Minna-Elina kirjoitti:

        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ä...

        Kyllä kai tuon voi korjatakin, mutta muutokset on niin rajuja, ettet sinä taaskaan ymmärrä niitä, joten se voi olla ajan hukkaa.

        Koita jakaa tuo ohjelmasi sellaisiin osiin, joissa hoidetaan yksi tapahtuma (Lisäys, poisto, tulostus, tallennus, tuotteen haku ja lopetus. Nämä kaikki ovat sitten oma funktionsa, joita kutsut valikosta. Nyt sinulla tuo ohjelma menee suoraan tuotteen lisäykseen, eikä valikkoon.

        ENSIN KORJAA SE LISTA
        Tämä on parempi tapa, ja sen on puolet pienempi ja sievempi, silti sisältää samat tiedot.
        List = {"Fasu":"Fazer", "Suukko":"Brunberg", "Lakupala":"Panda"}

        SITTEN KORJAA SE LISÄYS
        def TuotteenLisäys():
        print("Uuden tuotteen lisäys karkkikauppaan. Anna pyydetyt tiedot:")
        Karkki = str(input("Karkin nimi: "))
        Valmistaja = str(input("Valmistajan nimi: "))
        List.update({ Karkki : Valmistaja })

        Ymmärsitkö nämä muutokset, eli kannattaako tätä jatkaa.


      • Anonyymi
        Anonyymi kirjoitti:

        Kyllä kai tuon voi korjatakin, mutta muutokset on niin rajuja, ettet sinä taaskaan ymmärrä niitä, joten se voi olla ajan hukkaa.

        Koita jakaa tuo ohjelmasi sellaisiin osiin, joissa hoidetaan yksi tapahtuma (Lisäys, poisto, tulostus, tallennus, tuotteen haku ja lopetus. Nämä kaikki ovat sitten oma funktionsa, joita kutsut valikosta. Nyt sinulla tuo ohjelma menee suoraan tuotteen lisäykseen, eikä valikkoon.

        ENSIN KORJAA SE LISTA
        Tämä on parempi tapa, ja sen on puolet pienempi ja sievempi, silti sisältää samat tiedot.
        List = {"Fasu":"Fazer", "Suukko":"Brunberg", "Lakupala":"Panda"}

        SITTEN KORJAA SE LISÄYS
        def TuotteenLisäys():
        print("Uuden tuotteen lisäys karkkikauppaan. Anna pyydetyt tiedot:")
        Karkki = str(input("Karkin nimi: "))
        Valmistaja = str(input("Valmistajan nimi: "))
        List.update({ Karkki : Valmistaja })

        Ymmärsitkö nämä muutokset, eli kannattaako tätä jatkaa.

        Dictionary lista koostuu unikista avaimeta, ja täysin vapaasti valittavasta avaimen arvosta,

        LISTA EI VOI NÄYTTÄÄ TÄLTÄ
        "Lakupala" : "Panda"
        "Lakupala" : "Fazer"

        MUTTA SE VOI NÄYTTÄÄ TÄLTÄ
        Fasu" : "Fazer"
        Lakupala" : "Fazer"
        Suukko" : "Fazer"

        Eli dictionary listalla avaimen arvo voi olla sama vaikka jokaisella avaimella. Jos dictionary lista ei rajoituksiensa vuoksi sovi sovelluksesi käyttöön, voit valita tuple- tai lista- tyyppisen luettelomuodon, joilla rajoituksia on paljon vähemmän, ja myöskin listanhallintaan löytyy roimasti enemmän komentoja.

        Lista-tyyppisen luettelon sisäisiä hallinta-menetelmiä:
        append(), clear(), copy(), count(), extend(), index(), insert(), pop(), remove(), reverse() ja sort()


      • Anonyymi
        Anonyymi kirjoitti:

        Dictionary lista koostuu unikista avaimeta, ja täysin vapaasti valittavasta avaimen arvosta,

        LISTA EI VOI NÄYTTÄÄ TÄLTÄ
        "Lakupala" : "Panda"
        "Lakupala" : "Fazer"

        MUTTA SE VOI NÄYTTÄÄ TÄLTÄ
        Fasu" : "Fazer"
        Lakupala" : "Fazer"
        Suukko" : "Fazer"

        Eli dictionary listalla avaimen arvo voi olla sama vaikka jokaisella avaimella. Jos dictionary lista ei rajoituksiensa vuoksi sovi sovelluksesi käyttöön, voit valita tuple- tai lista- tyyppisen luettelomuodon, joilla rajoituksia on paljon vähemmän, ja myöskin listanhallintaan löytyy roimasti enemmän komentoja.

        Lista-tyyppisen luettelon sisäisiä hallinta-menetelmiä:
        append(), clear(), copy(), count(), extend(), index(), insert(), pop(), remove(), reverse() ja sort()

        Ja tuo edellä kerrottu rajoitus tulisi ottaa huomioon listaa lisätessä, nyt tuossa ei sitä huomioida millään tavalla, joten siinä tilanteessa kun käyttäjä yrittää syöttää listaan toistamiseen avaimen joka jo listalla on, tulee ohjelma kaatumaan virheeseen.


      • Anonyymi
        Anonyymi kirjoitti:

        Ja tuo edellä kerrottu rajoitus tulisi ottaa huomioon listaa lisätessä, nyt tuossa ei sitä huomioida millään tavalla, joten siinä tilanteessa kun käyttäjä yrittää syöttää listaan toistamiseen avaimen joka jo listalla on, tulee ohjelma kaatumaan virheeseen.

        Jos olisin lisännyt virheenkäsittelyn, olisi se näyttänyt sinulle niin oudolta, että olisit taas kehunut kuinka hienoja esimerkkejä, mutta eikö kukaan osaa korjata tätä minun tekemääni.


      • Anonyymi
        Anonyymi kirjoitti:

        Jos olisin lisännyt virheenkäsittelyn, olisi se näyttänyt sinulle niin oudolta, että olisit taas kehunut kuinka hienoja esimerkkejä, mutta eikö kukaan osaa korjata tätä minun tekemääni.

        Aloita joka ikinen python ohjelmasi niin että kaksi ensimmäistä riviä on nämä:
        #!/usr/bin/env python3
        # -*- coding: utf-8 -*-

        MIKSIKÖ
        Siksi että Linux ympäristö yrittää tunnistaa tiedoston MIME -tyypin tiedoston ensimmäisestä rivistä. Kun taas Windows tunnistaa sen tiedostonimen päätteestä.

        Voit testat tätä asiaan tekemällä pyython tiedoston jossa käytät noita kahta riviä, ja sitten toinen jossa niitä ei ole. Se tiedosto jossa nuo kaksi riviä on aukeaa järjestelmässäsi käytettyyn koodieditoriin (vaikka geany), mutta se josta ne puuttuu aukeaa järjestelmäsi tekstieditoriin (vaikka xed).


      • Anonyymi kirjoitti:

        Kyllä kai tuon voi korjatakin, mutta muutokset on niin rajuja, ettet sinä taaskaan ymmärrä niitä, joten se voi olla ajan hukkaa.

        Koita jakaa tuo ohjelmasi sellaisiin osiin, joissa hoidetaan yksi tapahtuma (Lisäys, poisto, tulostus, tallennus, tuotteen haku ja lopetus. Nämä kaikki ovat sitten oma funktionsa, joita kutsut valikosta. Nyt sinulla tuo ohjelma menee suoraan tuotteen lisäykseen, eikä valikkoon.

        ENSIN KORJAA SE LISTA
        Tämä on parempi tapa, ja sen on puolet pienempi ja sievempi, silti sisältää samat tiedot.
        List = {"Fasu":"Fazer", "Suukko":"Brunberg", "Lakupala":"Panda"}

        SITTEN KORJAA SE LISÄYS
        def TuotteenLisäys():
        print("Uuden tuotteen lisäys karkkikauppaan. Anna pyydetyt tiedot:")
        Karkki = str(input("Karkin nimi: "))
        Valmistaja = str(input("Valmistajan nimi: "))
        List.update({ Karkki : Valmistaja })

        Ymmärsitkö nämä muutokset, eli kannattaako tätä jatkaa.

        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...


      • Anonyymi
        Minna-Elina kirjoitti:

        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...

        Nyt sinä vänkäät väkisin siihen suuntaan että pitäisi tuo sekava rakenne säilyttää, mutta minun vastaveto on että nyt tehdäänkin päin vastoin ja opettelun vuoksi tästä rakennetaan modulaarinen ohjelma. Se pakottaa sinut väkisin yksinkertaisimpaan ja yleisesti hyväksyttyyn tapaan luoda ohjelmia, millä kielellä hyvänsä.

        Ajattelin että se main.py on pelkkä valikko, ei muuta. Kaikki mitä me nyt siihen lisätään tuotetaan kokonaan erilliseen tiedostoon. Näin jokainen moduuli pysyy yksinkertaisena, vaikka kuinka paljon lisäisit noita #hirvittäviä risuaita rivejä mukaan.

        Ajatellapas nyt aluksi että haluat ohjelmalla pystyttävän hakemaan tuotteen valmistajan kun käyttäjä kirjoittaa tuotteen nimen, vaikka "suukko", huomaa käyttäjältä ei vaadita tietoa kirjoitetaanko karkin nimi isolla vai pienellä, kirjoitti sen miten halusi, jos se on luettelossa mukana, tulostetaan valmistajan tiedot.

        No nyt tietysti tarvitaan ohjelmalle oma kansio, johon me koottaan ohjelmaan kuuluvat moduulit. ( Modulaarinen ohjelman rakenne) täysin uusi käsite joka tässä nyt sitten tulee varsin selvästi läpi käytyä, ja olen varma että jatkossa pidät sitä itsestään selvyytenä.

        Vuota vähän niin kirjoitan sinulle ensimmäisen moduulin, jonka sijoitat tälle ohjelmalle varattuun kansioon.


      • Anonyymi

        Hups, taisi mennä nuo linkit ristiin, mutta eipä se mitään haittaa.


      • Anonyymi
        Anonyymi kirjoitti:

        Hups, taisi mennä nuo linkit ristiin, mutta eipä se mitään haittaa.

        Ei näköjään onnistu tämä opastaminen, ylläpito poisti ohjeen tuosta välistä, Suomi24 on aika haskan haska näihin opastustehtäviin joissa esimerkeillä on merkittävä osuus sille tuleeko ymmärretyksi vai ei.

        Näinhän siinä tietysti kävi. Wituks meni, kiitos ylläpidon toimivasta moderoinnista.


      • Anonyymi
        Anonyymi kirjoitti:

        Ei näköjään onnistu tämä opastaminen, ylläpito poisti ohjeen tuosta välistä, Suomi24 on aika haskan haska näihin opastustehtäviin joissa esimerkeillä on merkittävä osuus sille tuleeko ymmärretyksi vai ei.

        Näinhän siinä tietysti kävi. Wituks meni, kiitos ylläpidon toimivasta moderoinnista.

        Jos asia on sinulle hyvin merkityksellinen suosittelen tuota parempaa sivustoa näiden asioiden käsittelyyn:
        https://bbs.io-tech.fi/forums/ohjelmointi-pelikehitys-ja-muu-sovelluskehitys.24/


      • Anonyymi
        Anonyymi kirjoitti:

        Ei näköjään onnistu tämä opastaminen, ylläpito poisti ohjeen tuosta välistä, Suomi24 on aika haskan haska näihin opastustehtäviin joissa esimerkeillä on merkittävä osuus sille tuleeko ymmärretyksi vai ei.

        Näinhän siinä tietysti kävi. Wituks meni, kiitos ylläpidon toimivasta moderoinnista.

        Oon jo ajat sitten siirtynyt just tän takia muille forumeille. Moderaattorit ymmärtää tekniikasta yhtä paljon kuin lehmä kevytmaidosta. Ja kaikki, mikä on heidän käsityskyvyn yläpuolella, poistetaan. Eli 70% teknisistä asioista :D
        Esim Ylilaudan ohjelmointi-forumilla saa jakaa koodeja ja linkkejä ja moderaattorit muutenkin asioista ymmärtävät joten eivät turhaan poistele.



      • Anonyymi
        Anonyymi kirjoitti:

        Oon jo ajat sitten siirtynyt just tän takia muille forumeille. Moderaattorit ymmärtää tekniikasta yhtä paljon kuin lehmä kevytmaidosta. Ja kaikki, mikä on heidän käsityskyvyn yläpuolella, poistetaan. Eli 70% teknisistä asioista :D
        Esim Ylilaudan ohjelmointi-forumilla saa jakaa koodeja ja linkkejä ja moderaattorit muutenkin asioista ymmärtävät joten eivät turhaan poistele.

        Tämmöinen valtava koneistoa pidetään yllä Windowsin ja Linuxin hakakumista varten, ajatella . . .


      • Anonyymi
        Anonyymi kirjoitti:

        Tämmöinen valtava koneistoa pidetään yllä Windowsin ja Linuxin hakakumista varten, ajatella . . .

        Toivottavasti ei yhteiskunnan tukivaroja haaskata tällaisen sivuston ylläpitämiseen.


      • minkkilaukku kirjoitti:

        Kun olet lukenut käyttäjän antamat tuotteen nimen ja valmistajan, niin sinun täytyy lisätä tämä tuote tuohon List-nimiseen listaan joka sinulla on.
        Olet saanut käyttäjältä tiedot

        tuote = input("Karkin nimi: ")
        valmistaja = input("Valmistajan nimi: ")

        Nyt voit luoda uuden tuotteen (eli dict:n niinkuin olet päättänyt tuotteita mallintaa) ja sitten lisätä sen listaan.
        Vinkki:
        uusituote = {} #laita tiedot tuote ja valmistaja tuonne sisälle
        List.append(uusituote) #lisää uusi tuote listaan

        Suosittelisin nyt aluksi unohtamaan tuon tiedostoon tallentamisen ja sieltä lukemisen ja aluksi keskittymään vain tuohon että saat ohjelman toimimaan siten, että samalla ajokerralla syötetyt tuotteet saadaan tulostettua. (Jos halutaan, että tuotteet säilyy muistissa, kun ohjelma sammutetaan ja ajetaan uudelleen, niin sittenhän ne on tallennettava tiedostoon ja luettava sieltä.)

        Onko Minkkilaukku enää 'linjoilla'?

        Mietin, että jos kehittäisin vielä tuota karkkikauppaani siten, että se tallentaisi karkit, niin kuinka se koodilla tehtiinkään?


    • Anonyymi
    • Anonyymi

      Tein yhden version, josta voit katsoa mallia. Tuotahan voi jatkaa sitten niillä tiedosto-operaatioilla. Esimerkiksi main()-funktiossa ladattaisiin lista ennen toimintovalikkoon siirtymistä, ja poistuttaessa tallennettaisiin uusi lista.

      https://pastebin.com/9cATd1KL

      • Ok! Hieno koodi, mutta ei tällainen aloittelija vielä ymmärrä sitä. Eikö tuohon del loop:iin saa lisättyä sitä poistettavan karkin arvoa?


      • Anonyymi
        Minna-Elina kirjoitti:

        Ok! Hieno koodi, mutta ei tällainen aloittelija vielä ymmärrä sitä. Eikö tuohon del loop:iin saa lisättyä sitä poistettavan karkin arvoa?

        Eiköhän sen sinne saa lisättyä, jos lisää toiminnallisuutta.


    • Anonyymi

      Hyvä siitä lopulta tulee, kun aikanne opettelette! Kantapään kautta opettelu on vieläpä tehokasta, koska silloin jotain oivaltaakin. Sen verran molempia nimimerkin takaa harjoittelevia neuvoisin, että kannattaa välillä aloittaa alusta ja hieman eri tulokulmasta. Silloin yleensä huomaa jonkun oman "päähän pinttymisen" vaikutuksen.

    Ketjusta on poistettu 4 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Voitasko leikkiä jotain tunnisteleikkiä?

      Tietäisi ketä täällä käy kaipaamassa.. kerro jotain mikä liittyy sinuun ja häneen eikä muut tiedä. Vastaan itsekin kohta
      Ikävä
      80
      2015
    2. Tietysti jokainen ansaitsee

      Hän varmasti ansaitsee vain parasta ja sopivinta tietenkin, suon sen onnen hänelle enemmän kuin mielelläni. Aika on nyt
      Ikävä
      18
      1763
    3. Millä voin

      Hyvittää kaiken?
      Ikävä
      16
      1634
    4. 50+ naiset kyl

      Lemottaa sillille mut myös niitte kaka lemottaa pahlle ku kävin naiste veskis nuuhiin
      Ikävä
      21
      1430
    5. Jotain puuttuu

      Kun en sinua näe. Et ehkä arvaisi, mutta olen arka kuin alaston koivu lehtiä vailla, talven jäljiltä, kun ajattelen sinu
      Ikävä
      60
      1337
    6. hieman diabetes...

      Kävin eilen kaverin kanssa keskusapteekissa kun on muutama kuukausi sitten tullut suomesta ja oli diabetes insuliinit lo
      Pattaya
      18
      1298
    7. Välitän sinusta mies

      Kaikki mitä yritin kertoa tänään ei mennyt ihan putkeen..Joka jäi jälkeenpäin ajateltuna suoraan sanottuna harmittaa aiv
      Työpaikkaromanssit
      6
      1282
    8. En voi sille mitään

      Tulen niin pahalle tuulelle tästä paikasta nykyisin. Nähnyt ja lukenut jo kaiken ja teidän juttu on samaa illasta toisee
      Ikävä
      12
      1264
    9. Miten joku voi käyttää koko elämänsä

      siihen että nostelee täällä vanhoja ketjuja ja troIIaa niihin jotain linkkiä mitä kukaan ei avaa? Ihmisellä ei ole mitää
      Tunteet
      10
      1221
    10. Haluan sut

      Haluatko sinä vielä mut?
      Ikävä
      69
      1216
    Aihe