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?
751201
Äänestä

Muut lukivat myös

Vastaukset 75

Vanhimmat

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.

Äänestä
  • Aloittaja

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

    Äänestä

  • Aloittaja

    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.

    Äänestä

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

    Äänestä

  • 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

    Äänestä

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

    Äänestä

  • Aloittaja

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

    Äänestä

  • Aloittaja

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

    Äänestä

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

    Äänestä

  • Aloittaja

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

    Äänestä

  • Aloittaja

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

    Äänestä

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

    Äänestä

  • Aloittaja

    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!

    Äänestä

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

    Äänestä

  • Aloittaja

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

    Äänestä

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

    Äänestä

  • 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

    Äänestä

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

    Äänestä

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

    Äänestä

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

    Äänestä

  • Aloittaja

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

    Äänestä

  • Aloittaja

  • Aloittaja

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

    Äänestä

  • Aloittaja

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

    Äänestä

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

    Äänestä

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

    Äänestä

  • Aloittaja

    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

    Äänestä

  • Aloittaja

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

    Äänestä

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

    Äänestä

  • Aloittaja

    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

    Äänestä

  • Aloittaja

    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.

    Äänestä

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

    Äänestä

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

    Äänestä

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

    Äänestä

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

    Äänestä

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

    Äänestä

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

    Äänestä

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

    Äänestä

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

    Äänestä

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

    Äänestä

  • 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

    Äänestä

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

    Äänestä

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

    Äänestä

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

    Äänestä

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

    Äänestä

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

    Äänestä

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

    Äänestä

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

    Äänestä

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

    Äänestä

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

    Äänestä

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

    Äänestä

  • Aloittaja

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

    Äänestä

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

    Äänestä

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

    Äänestä

  • Aloittaja

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

    Äänestä

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

    Äänestä

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

    Äänestä

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

    Äänestä

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

    Äänestä

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

    Äänestä

  • Aloittaja

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

    Äänestä

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

    Äänestä

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

    Äänestä

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

    Äänestä

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

    Äänestä

  • 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+:DEsim+Ylilaudan+ohjelmointi-forumilla+saa+jakaa+koodeja+ja+linkkejä+ja+moderaattorit+muutenkin+asioista+ymmärtävät+joten+eivät+turhaan+poistele.

    Äänestä

  • Aloittaja

  • 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+:DEsim+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 . . .

    Äänestä

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

    Äänestä

  • Aloittaja

    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?

    Äänestä

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

Äänestä
  • Aloittaja

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

    Äänestä

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

    Äänestä

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.

Äänestä

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

Kommentoi aloitusta


Minna-Elina kirjoitti:

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?

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu