Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  2 5668
Hei.
Får bare opp antall epler.
Hva er feil?

Kode

allGuests = {"Alice": {"apples": 5, "pretzels": 12},
             "Bob": {"ham sandwiches": 3, "apples": 2},
             "Carol": {"cups": 3, "apple pies": 1}}
def totalBrought(guests, item):
    numBrought = 0
    for k, v in guests.items():
        numBrought = numBrought +  v.get(item, 0)
        return numBrought

print("Numbers of things being brought:")
print(" - Apples         " + str(totalBrought(allGuests, "apples")))
print(" - Cups           " + str(totalBrought(allGuests, "cups")))
print(" - Cakes          " + str(totalBrought(allGuests, "cakes")))
print(" - Ham sandwiches " + str(totalBrought(allGuests, "ham sandwiches")))
print(" - Apple Pies     " + str(totalBrought(allGuests, "apple pies")))
Får også 2 epler for lite.

Fant svaret Feil med innrykk på return
Sist endret av davidentotre; 9. april 2020 kl. 20:58. Grunn: Automatisk sammenslåing med etterfølgende innlegg.
Trigonoceps occipita
vidarlo's Avatar
Donor
Teach a man to fish...

Det er lurt å lære seg debugging.

Du kan t.d. bruke PyCharm. Community edition er fri programvare, og har funksjonalitet i massevis med det du held på med no.

Fordelen med ein debugger er at du kan sjå kva som ligg i minne, og du kan gå gjennom programmet ditt stegvis. For å sette opp PyCharm kan du gå gjennom JetBrains sin dokumentasjon på det.

Når du åpner programmet ditt i pycharm vil det sjå noko slikt ut:


Her er vi interessert i det som skjer i summeringsfunksjonen din, på linje 6 og utover. Vi skrur på et breakpoint her. Då vil debuggeren stoppe programmet på den posisjonen, og vise deg innhaldet i minnet, og la deg gå stegvis gjennom programmet frå det punktet. Å sette breakpoint gjer du ved å trykke på høgre sida av sekstallet. Ei lita rød kule vil dukke opp i margen.


Deretter kan vi starte programmet i debuggingsmodus.


No vil programmet stoppe på linje seks. I debug-området vil du no sjå variablane, og eit par ekstra knapper. Held du musa over vil du sjå kva dei gjer. Det er to-tre som er av spesiell interesse:
-Step into køyrer programmet stegvis, og går inn i funksjonen/løkka/whatever.
-Step over hopper over denne instruksjonen og går viare.
-Resume fortset køyring som nomralt.


Minnet er forsåvidt ikkje så veldig interessant her, du har kun statiske data, så dei visste vi allereie kva var. Så la oss velge step into. Og her ser vi noko interessant. Løkka vert køyrt, men variabelen k er alltid Alice. Den endrar aldri til Bob eller Carol; det er kun Alice sine ting som vert talt opp - og Alice har kun med seg fem epler og 12 pretzels - men du spør aldri etter antall pretzels. Så altså gjer ikkje python heilt det du forventer - og du har no funne ut kvifor den ikkje printer det du forventer; den går ikkje gjennom heile lista di, kun Alice-delen av den.

Resten trur eg du finn ut sjølv. Og det å lære seg debugging og bruk av debugger er veldig viktig

Forøvrig er godt tips å bruke \t, altså tab space, for å aligne ting.

Eksempel:

Kode

>>> print("Hei:\t\thopp")
Hei:            hopp
>>> print("testsetning:\thopp")
testsetning:    hopp
>>>
Då slepp du å halde styr på spaces manuelt
Sist endret av vidarlo; 10. april 2020 kl. 01:20. Grunn: Automatisk sammenslåing med etterfølgende innlegg.
Sitat av vidarlo Vis innlegg
Teach a man to fish...
Vis hele sitatet...
Wooow hahaha, jeg trodde den røde knappen var for å lage et bokmerke sånn at man huska hvor man var! Trenger vel ikke si at jeg er selvlært og debugger med å kjøre linje for linje osv....... Til forsvar så bruker jeg R og jobber mest med data hehe. Takk for et fantastisk innlegg!