Python Supermarket

Liittynyt
07.07.2021
Viestejä
6
Saisko täältä apua?
Tehtävänä on tehdä Supermarket ohjelma,
  • jossa kymmenen tuotteen hinnat ovat listassa
  • joka kysyy tuotteen nroa (1-10), hakee hinnan listalta ja laskee mukaan kokonaissummaan, sekä tulostaa tuotteen nron ja hinnan
  • joka kysyy tuotetta kunnes syöte on '0' (joka lopettaa ohjelman)
  • joka lopuksi tulostaa ostosten kokonaissumman, pyytää maksua ja tulostaa palautettavat vaihtorahat
Ongelmaksi on koitunut tuo kokonaissumman laskeminen.

Eli kysymys kuuluu:
Miten saan ohjelman laskemaan valitut tuotteet kokonaissummaan?

Tällä hetkellä ohelma näyttää tältä..
Python:
#Supermarket-ohjelma
print("Supermarket\n===========")


while True:

    hinta = [10, 14, 22, 33, 44, 13, 22, 55, 66, 77]
    tuote = input("Valitse tuote (1-10) 0 lopetus: ")

    if tuote == "1":
        print("Tuote: ",tuote," Hinta: ",hinta[0])
        summa =+ hinta[0]

    elif tuote == "2":
        print("Tuote: ",tuote," Hinta: ",hinta[1])
        summa =+ hinta[1]

    elif tuote == "3":
        print("Tuote: ",tuote," Hinta: ",hinta[2])
        summa =+ hinta[2]

    elif tuote == "4":
        print("Tuote: ",tuote," Hinta: ",hinta[3])
        summa =+ hinta[3]

    elif tuote == "5":
        print("Tuote: ",tuote," Hinta: ",hinta[4])
        summa =+ hinta[4]

    elif tuote == "6":
        print("Tuote: ",tuote," Hinta: ",hinta[5])
        summa =+ hinta[5]

    elif tuote == "7":
        print("Tuote: ",tuote," Hinta: ",hinta[6])
        summa =+ hinta[6]

    elif tuote == "8":
        print("Tuote: ",tuote," Hinta: ",hinta[7])
        summa =+ hinta[7]

    elif tuote == "9":
        print("Tuote: ",tuote," Hinta: ",hinta[8])
        summa =+ hinta[8]

    elif tuote == "10":
        print("Tuote: ",tuote," Hinta: ",hinta[9])
        summa =+ hinta[9]

    elif tuote == "0":
        for i in range(0,len(hinta)):
            kokonaissumma = summa + hinta[i]
            print("Yhteensä: ",int(summa))
            maksu = int(input("Maksu: "))
            print("vaihto: ",maksu-summa)
            break

        break
 
Liittynyt
03.11.2016
Viestejä
55
Saisko täältä apua?
Tehtävänä on tehdä Supermarket ohjelma,
  • jossa kymmenen tuotteen hinnat ovat listassa
  • joka kysyy tuotteen nroa (1-10), hakee hinnan listalta ja laskee mukaan kokonaissummaan, sekä tulostaa tuotteen nron ja hinnan
  • joka kysyy tuotetta kunnes syöte on '0' (joka lopettaa ohjelman)
  • joka lopuksi tulostaa ostosten kokonaissumman, pyytää maksua ja tulostaa palautettavat vaihtorahat
Ongelmaksi on koitunut tuo kokonaissumman laskeminen.

Eli kysymys kuuluu:
Miten saan ohjelman laskemaan valitut tuotteet kokonaissummaan?

Tällä hetkellä ohelma näyttää tältä..
Python:
#Supermarket-ohjelma
print("Supermarket\n===========")


while True:

    hinta = [10, 14, 22, 33, 44, 13, 22, 55, 66, 77]
    tuote = input("Valitse tuote (1-10) 0 lopetus: ")

    if tuote == "1":
        print("Tuote: ",tuote," Hinta: ",hinta[0])
        summa =+ hinta[0]

    elif tuote == "2":
        print("Tuote: ",tuote," Hinta: ",hinta[1])
        summa =+ hinta[1]

    elif tuote == "3":
        print("Tuote: ",tuote," Hinta: ",hinta[2])
        summa =+ hinta[2]

    elif tuote == "4":
        print("Tuote: ",tuote," Hinta: ",hinta[3])
        summa =+ hinta[3]

    elif tuote == "5":
        print("Tuote: ",tuote," Hinta: ",hinta[4])
        summa =+ hinta[4]

    elif tuote == "6":
        print("Tuote: ",tuote," Hinta: ",hinta[5])
        summa =+ hinta[5]

    elif tuote == "7":
        print("Tuote: ",tuote," Hinta: ",hinta[6])
        summa =+ hinta[6]

    elif tuote == "8":
        print("Tuote: ",tuote," Hinta: ",hinta[7])
        summa =+ hinta[7]

    elif tuote == "9":
        print("Tuote: ",tuote," Hinta: ",hinta[8])
        summa =+ hinta[8]

    elif tuote == "10":
        print("Tuote: ",tuote," Hinta: ",hinta[9])
        summa =+ hinta[9]

    elif tuote == "0":
        for i in range(0,len(hinta)):
            kokonaissumma = summa + hinta[i]
            print("Yhteensä: ",int(summa))
            maksu = int(input("Maksu: "))
            print("vaihto: ",maksu-summa)
            break

        break
Muutama huomio äkkiseltään:
  • "Lisää ja aseta" syntaksi on += eikä =+.
  • Kokonaissumma muuttujaa ei käytetä eikä mielestäni myöskään tarvita.
  • For-looppia ei tarvita sillä summaa lasketaan aina kun tuote lisätään ostoskoriin.
  • tuote == '0' vain lopettaa loopin eli sen sisällön voi siirtää whilen ulkopuolelle
  • Kaikki nuo elif 2-10 on aika tarpeettomia jos huomaat että tuotteen numero on input - 1
 
Liittynyt
07.07.2021
Viestejä
6
Tää ei nyt oikeen aukee mulle vieläkään.
En millään saa lisättyä valitun tuotteen hintaa sinne loppusummaan. Summan tulosteeseen tulee joko viimeiseksi valitun ostoken hinta tai 0.
Saisko tän toiminnan väännettyä mulle vaikka ratakiskosta ?:hmm:
 
Liittynyt
17.10.2016
Viestejä
5 337
Tää ei nyt oikeen aukee mulle vieläkään.
En millään saa lisättyä valitun tuotteen hintaa sinne loppusummaan. Summan tulosteeseen tulee joko viimeiseksi valitun ostoken hinta tai 0.
Saisko tän toiminnan väännettyä mulle vaikka ratakiskosta ?:hmm:
Kokeile määritellä tuo summa -muuttuja ennen while -looppia eli laita summa = 0 heti tuohon kolmannelle riville (muuten tulee herja while-loopin sisällä että muuttujaa ei määritelty) ja vaihda nuo =+ oikeiksi eli += -muotoon ja kokeile uudestaan. Ainakin teoriassa noilla muutoksilla pitäisi toimia paremmin.
 
Liittynyt
07.07.2021
Viestejä
6
Kokeile määritellä tuo summa -muuttuja ennen while -looppia eli laita summa = 0 heti tuohon kolmannelle riville (muuten tulee herja while-loopin sisällä että muuttujaa ei määritelty) ja vaihda nuo =+ oikeiksi eli += -muotoon ja kokeile uudestaan. Ainakin teoriassa noilla muutoksilla pitäisi toimia paremmin.
Mahtavaa, sain toimimaan! Kiitos! :giggle:
 
Liittynyt
14.04.2022
Viestejä
4
Valmiin koodin antaminen vailla kunnon selitystä tuottaa enemmän harmia kuin hyötyä tämän henkilön oppimiselle.

Terveisin, entinen ohjelmointikurssin pääassari.
Jaa. Kymmenen kuukautta sitten postattu tuo viesti. Voi hyvinkin olla, että henkilö on kehittynyt tuossa ajassa jo jonkin verran.
 
Liittynyt
17.10.2016
Viestejä
21 886
Jaa. Kymmenen kuukautta sitten postattu tuo viesti. Voi hyvinkin olla, että henkilö on kehittynyt tuossa ajassa jo jonkin verran.
Kesällä, jos kurssi pidetään uudestaan, tulee sitten vaan joku uusi henkilö, joka vaan kopioi antamasi ratkaisun ja ei mieti yhtään. Olet osaltasi sitten osallisena tässä huijauksessa ja syyllinen siihen, että assareiden pitäisi joka vuosi miettiä tehtävät uusiksi.

Harjoitustehtävien on tarkoitus saada oppilaat ajattelemaan ja kokeilemaan konsepteja käytännössä. Jos valmis ratkaisu ja täydet pisteet pistetään siihen nenän eteen, niin moni voi sortua. Se on huonoa tapaa (sinulta) laittaa valmis ratkaisu ja aiheutat vaan lisätöitä niille ihmisille, jotka yrittävät näitä asioita opettaa.

Lisäksi et yhtään vaivautunut selittämään , miten ongelman ratkaisit ja mitä teit kohdissa, jotka olivat kysyjälle vaikeita - niin on helpompi vaan kopioida, kuin pysähtyä miettimään. Edelleen, aiheutit vaan vahinkoa ja ei ollut hyvä asia, että pistät valmiin ratkaisun vailla kommentteja yhtään minnekään.
 
Liittynyt
16.11.2020
Viestejä
2 567
Että sellaista :) Jos nyt pysytään tämän ketjun kontekstissa, niin kyllähän alkuperäinen kysyjä oli tehtävää yrittänyt itsekin miettiä ja ratkaista ja ilmeisesti saikin apujen jälkeen jonkinlaisen toimivan version kasaan.

Jos joku sen jälkeen postaa ns. siistin ratkaisun, että näinkin voi tehdä ja joku kolmas sen onnistuu netistä googlaamaan ja kopsaa ajattelematta, niin ei kai se tämän siistin vastauksen postaajan vastuulla enää mitenkään ole. Tuohan on muutenkin niin tusinatavaraa jokaisen ohjelmoinnin peruskurssin kannalta, että vastaavia ratkaisuja on takuuvarmasti netti pullollaan.

Samaan vaivaan tuon koko ongelman ois tietty selittänyt auki kuin kirjoittelisi tämmöisiä tyhjänpäiväisiä, mutta en ite ainakaan jaksa, kun kukaan ei oo kysynytkään :D
 
Liittynyt
17.10.2016
Viestejä
21 886
Että sellaista :) Jos nyt pysytään tämän ketjun kontekstissa, niin kyllähän alkuperäinen kysyjä oli tehtävää yrittänyt itsekin miettiä ja ratkaista ja ilmeisesti saikin apujen jälkeen jonkinlaisen toimivan version kasaan.

Jos joku sen jälkeen postaa ns. siistin ratkaisun, että näinkin voi tehdä ja joku kolmas sen onnistuu netistä googlaamaan ja kopsaa ajattelematta, niin ei kai se tämän siistin vastauksen postaajan vastuulla enää mitenkään ole. Tuohan on muutenkin niin tusinatavaraa jokaisen ohjelmoinnin peruskurssin kannalta, että vastaavia ratkaisuja on takuuvarmasti netti pullollaan.

Samaan vaivaan tuon koko ongelman ois tietty selittänyt auki kuin kirjoittelisi tämmöisiä tyhjänpäiväisiä, mutta en ite ainakaan jaksa, kun kukaan ei oo kysynytkään :D
En huijannut, kun sanoin olleeni ohjelmointikurssin (pää)assari. Meillä ainakin mietittiin pizzapalkalla (tai vähemmällä) uusia tehtäviä joka vuosi, jotka olisivat oppilaille mielekkäitä ja joita ei olisi netissä. Jos kaikki ratkaisut ovat netissä, niin sieltä tulee tehtäväksi "tee ohjelma, jolla professori voi säilöä kaikkein rakkaimmat differentiaaliyhtälönsä". Sitten kenelläkään ei ole hauskaa.

Lisäksi valitettavasti jotkut oppilaat olivat ratkaisuistaan niin ylpeitä, että jakoivat niitä itse internetissä. Eikä mitään ollut tehtävissä tämän estämiseksi.

Mutta paljon töitä tehtiin sen eteen, etteivät oppilaat huijaa/kopioi harjoitustöissä ja akateemisessa mielessä tuotettiin tähän myös työkaluja/metodeja.

--

Tämä on kyllä vain yksittäinen tehtävä ja saattaa nojata siihen, että "Super Market" tuottaa googlesta hyvin geneerisiä tuloksia, mutta ymmärtänet idean? Nämä harjoitustyöt joutuu poistamaan käytöstä ja keksimään uudet tilalle, kun ihmiset ajattelemattomasti laittavat niitä nettiin? Se rasittaa ohjelmointikurssien henkilökuntaa ja näissä vielä on automaattinen tarkistin yleensä käytössä, niin sillekin täytyy tehdä uudet ratkaisutarkistimet. Tätä ei tarvitisisi tehdä, jos ihmiset vähän rajoittaisivat sitä valmiiden ratkaisujen laittamista nettiin..
 
Liittynyt
11.04.2022
Viestejä
54
Siis hetkonen, ihmiset ovat menneet ohjelmointikurssille ja sitten kopioivat vastauksia netistä, annettuihin tehtäviin? Mikäs järki siinä on? Vai olenko minä vaan hölömö?
 
Liittynyt
16.11.2020
Viestejä
2 567
En huijannut, kun sanoin olleeni ohjelmointikurssin (pää)assari. Meillä ainakin mietittiin pizzapalkalla (tai vähemmällä) uusia tehtäviä joka vuosi, jotka olisivat oppilaille mielekkäitä ja joita ei olisi netissä. Jos kaikki ratkaisut ovat netissä, niin sieltä tulee tehtäväksi "tee ohjelma, jolla professori voi säilöä kaikkein rakkaimmat differentiaaliyhtälönsä". Sitten kenelläkään ei ole hauskaa.

Lisäksi valitettavasti jotkut oppilaat olivat ratkaisuistaan niin ylpeitä, että jakoivat niitä itse internetissä. Eikä mitään ollut tehtävissä tämän estämiseksi.

Mutta paljon töitä tehtiin sen eteen, etteivät oppilaat huijaa/kopioi harjoitustöissä ja akateemisessa mielessä tuotettiin tähän myös työkaluja/metodeja.

--

Tämä on kyllä vain yksittäinen tehtävä ja saattaa nojata siihen, että "Super Market" tuottaa googlesta hyvin geneerisiä tuloksia, mutta ymmärtänet idean? Nämä harjoitustyöt joutuu poistamaan käytöstä ja keksimään uudet tilalle, kun ihmiset ajattelemattomasti laittavat niitä nettiin? Se rasittaa ohjelmointikurssien henkilökuntaa ja näissä vielä on automaattinen tarkistin yleensä käytössä, niin sillekin täytyy tehdä uudet ratkaisutarkistimet. Tätä ei tarvitisisi tehdä, jos ihmiset vähän rajoittaisivat sitä valmiiden ratkaisujen laittamista nettiin..
En minä sitä ajatellutkaan, että olisit huijannut ja kyllä minä sen yliopiston pienipalkkaisen tuntiopettajan tai vielä pienempipalkkaisen apulaisen tuskan ymmärrän (meillä päin ohjelmointikursseilla avustetaan tosin tuntipalkalla, ei ruokapalkalla), mutta eihän tämä niinku tämän foorumin ongelma ole.

Ylimääräinen työ vtuttaa kaikkia, mutta ei tuollaisen supermarket-tehtävän pyöräyttäminen sellaiseksi, että se noudattaa samoja rakenteita, mutta ei menekään enää vanhan copy-pasteemisella, paljoa vaadi keneltäkään, joka ymmärtää näiden asioiden päälle. Ei myöskään niiden automaattitestien korjaaminen.

Ja ainoa tapa, jolla voit oikeasti varmistua siitä, että opiskelija tajuaa koodinsa, on pistää hänet selittämään se läpi. Siihen ei tietystikään ole mahdollisuutta jokaisen tehtävän kohdalla tai välttämättä ollenkaan isommilla massoilla, mutta näin tehtiin meidän jatkokurssin harjoitustyön kanssa. Harkkatyö vaadittiin kurssin läpipääsyyn, suoritetut demotehtävät vaan nosti tenttipistemäärää.

Jotain edellisen kaltaista minä hyödyntäisin mieluummin kuin sitä, että koittaisin tilkitä porsaanreikiä, jotka ei oo tänä päivänä mitenkään tilkittävissä.

---

muoksista. ja niin, yliopistojen ohjelmointikursseille menee melkoisen suuri osa ihan siksi, kun on pakko. Meikäläisen alkuperäinen pääaine oli tietojärjestelmätiede ja mitä sitä porukkaa näki ja kuuli, niin valtaosalla vaikutti olevan ihan muut hommat tähtäimessä kuin koodarin.

Sit jos maksaa jostain kurssista tai haluaa oikeasti oppia koodaamaan, niin en ymmärrä enää minäkään, jos kopsaillaan vaan ratkaisuja ajattelematta yhtään itse.
 
Viimeksi muokattu:

hrk

Liittynyt
23.07.2017
Viestejä
1 730
yliopistojen ohjelmointikursseille menee melkoisen suuri osa ihan siksi, kun on pakko. Meikäläisen alkuperäinen pääaine oli tietojärjestelmätiede ja mitä sitä porukkaa näki ja kuuli, niin valtaosalla vaikutti olevan ihan muut hommat tähtäimessä kuin koodarin.
IT-alalla töissä olevista aika harva, koulutustasosta riippumatta, koodaa tai edes oikeasti osaa koodata itse. Vaan ollaan pomoja tai asiantuntijoita tai myyntimiehiä tai tukihenkilöitä tai tietokannanhoitajia tai... Sovellukset teetetään tai ostetaan jostain. Ja näin sen pitää ollakin.
 
Liittynyt
16.11.2020
Viestejä
2 567
IT-alalla töissä olevista aika harva, koulutustasosta riippumatta, koodaa tai edes oikeasti osaa koodata itse. Vaan ollaan pomoja tai asiantuntijoita tai myyntimiehiä tai tukihenkilöitä tai tietokannanhoitajia tai... Sovellukset teetetään tai ostetaan jostain. Ja näin sen pitää ollakin.
Kyllä, vähän tuota samaa niin kuin itekin ajattelin. Tietojärjestelmätiedehän on täällä kaiken lisäksi kauppatieteellinen tutkinto, mutta kuuluu siihen toki (toivottavasti en muista pahasti pieleen) pakollisena ainakin yksi kurssi ohjelmointia ja pakollinen tietokantojen kurssi, joka menee aika syvälle siinä asiassa. Jotenkin epäilen, että TJT:stä kovin montaa DBA:takaan tulee, mutta mistäs tuon tietää.

Mutta niin, en tiedä voiko itteänsäkään kehua miksikään kovin lahjakkaaksi koodariksi, vaikka koodarin tittelillä töitä tehdään :D Ehkä meikäläisen vahvuudet siinä, että pystyn tekemään tarvittaessa aika laajalla skaalalla hommia suunnittelusta, supporttiin, testaukseen, pilveen, konttialustoihin ja niin edelleen ja ohessa kyllä koodaamaankin.

P.S jokohan ollaan riittävän kaukana ketjun aiheesta :D
 
Liittynyt
14.04.2022
Viestejä
4
Poistin viestin. Näköjään niin salaista hommaa tämä supermarkettikoodaus, että en hoksannutkaan mihin soppaan lusikkani tuikkasin. Parempi poistua vähin äänin paikalta.
 
Liittynyt
16.11.2020
Viestejä
2 567
Poistin viestin. Näköjään niin salaista hommaa tämä supermarkettikoodaus, että en hoksannutkaan mihin soppaan lusikkani tuikkasin. Parempi poistua vähin äänin paikalta.
Nooo, ehkei kannata liikaa itteensä ottaa, vähän saatto myös tulla kärpäsestä härkänen :D
 
Liittynyt
28.04.2020
Viestejä
47
Poistin viestin. Näköjään niin salaista hommaa tämä supermarkettikoodaus, että en hoksannutkaan mihin soppaan lusikkani tuikkasin. Parempi poistua vähin äänin paikalta.
Esimerkkisi oli hyvä, ellei vieläkin parempi, eikä poistoon ollut mitään tarvetta. Ajattelin itsekin laittaa vastaavan johon olisin lisännyt virheellisen syötön käsittelyn. Kyllä aloittelevan on jostakin nähtävä ensin esimerkit kuinka asiat saadaan tehtyä fiksummin.

Tässä täytyy muistaa miksi näitä palstoja luetaan, minä itse olen hakenut näistä keskusteluista osaavien tekemiä ratkaisuja, että itsekin joskus osaisin samalla tavalla ratkoa eteen tulevia ongelmia. Nyt kun ketjun ainut anti aloittelevalle on poistettu, on tämän ketjun lukeminen ajanhukkaa.
 
Viimeksi muokattu:
Liittynyt
11.04.2022
Viestejä
54
Tein reenauksen vuoksi noiden annettujen sääntöjen mukaan. Näyttäisi toimivan mutta jäi tänne laittamatta, ehkä olisi ollut hyvä "näin sitä ei tehdä" esimerkki. :lol:
Mitä tehnyt joskus codewars:in tehtäviä, ratkaisun jälkeen kun katsoi muiden ratkaisuja ne oli melkein aina yhestä kahteen rivin ratkaisuja, kun mun hieno koodi oli 20+ riviä pitkä.
 
Toggle Sidebar

Statistiikka

Viestiketjut
237 574
Viestejä
4 166 761
Jäsenet
70 425
Uusin jäsen
Juhizi

Hinta.fi

Ylös Bottom