dictionaries index in range? (python)

Moderators: jkien, Xilvo

Berichten: 6

dictionaries index in range? (python)

zie volgende opgave. ik snap dat de index hier bepaald wordt door de keys en niet vanaf 0, maar waarom wordt key 4 dan niet geprint?

input:
woordenboek={1: "Dagelijkse kost,", 2:"Het scheldepeleton,", 3: "Familie", 4: "Scheire en de schepping"}
for i in range(1,4):
print(woordenboek)
print("worden uitgezonden op verschillende zenders.")

output:
Dagelijkse kost,
Het scheldepeleton,
Familie
worden uitgezonden op verschillende zenders.

Gebruikersavatar
Berichten: 2.351

Re: dictionaries index in range? (python)

Ik denk dat je

print(woordenboek)

bedoelt.

range(1,4) loopt in Python van 1 tot 3. De values bij de keys van 1 tot 3 worden dus afgedrukt.

Gebruikersavatar
Berichten: 2.351

Re: dictionaries index in range? (python)

wnvl1 schreef: ma 03 jan 2022, 01:11 Ik denk dat je

Code: Selecteer alles

print(woordenboek[i])
bedoelt.

range(1,4) loopt in Python van 1 tot 3. De values bij de keys van 1 tot 3 worden dus afgedrukt.

Gebruikersavatar
Berichten: 1.605

Re: dictionaries index in range? (python)

Hieronder krijg je alles op een presenteer blaadje.

Het is echter leerzaam goed de vraag leren te formuleren. Indien je het antwoord met google niet vind betekend het dat de de stof nog niet geheel beheerst.

Bij mijzelf merk ik dat. Indien iets niet lukt en google (of andere zoekmachine) dan krijg ik wazige slechte sites (niet deze!). Vaak betekend dat bij mij: eerst korte studie naar definities en benamingen.

Tevens begrijp ik jouw code niet (je maakt geen gebruikt van tabs bijvoorbeeld). En is voor (mij) te zien vanuit teveel hoeken. Is het een letterlijke opgave of jouw eigen code wat je geeft?

Plaat jouw code met knop: </>. Dan is het beter leesbaar zoals hieronder.

Code: Selecteer alles

#'Deze looped door namen: 1-4'
woordenboek={1: "Dagelijkse kost,", 2:"Het scheldepeleton,", 3: "Familie", 4: "Scheire en de schepping"}
for i in woordenboek:
    print(i)

Code: Selecteer alles

#'Deze looped door waarden: 1-4'  
woordenboek={1: "Dagelijkse kost,", 2:"Het scheldepeleton,", 3: "Familie", 4: "Scheire en de schepping"}
for i in woordenboek:
    print(woordenboek.get(i))

Code: Selecteer alles

#'Deze (andere manier) looped door waarden: 1-4'  
woordenboek={1: "Dagelijkse kost,", 2:"Het scheldepeleton,", 3: "Familie", 4: "Scheire en de schepping"}
for i in woordenboek:
    print(woordenboek[i])

Code: Selecteer alles

#'Deze loop door beide'
woordenboek={1: "Dagelijkse kost,", 2:"Het scheldepeleton,", 3: "Familie", 4: "Scheire en de schepping"}
for key, value in woordenboek.items():
    print(key, '->', value)

Berichten: 6

Re: dictionaries index in range? (python)

Ik weet dat de values van keys 1 tot 3 worden afgedrukt, maar ik begrijp niet waarom. Ik had begrepen uit de theorie dat dictionaries niet vanaf index 0 starten zoals bv lists, daarom snap ik niet waarom de value van key 4 niet mee wordt afgedrukt. Hieronder is de letterlijke opgave (vierkante haakjes i waren weggevallen met het kopiëren omdat het niet in codeweergave stond in vorige post).

Code: Selecteer alles

woordenboek={1: "Dagelijkse kost,", 2:"Het scheldepeleton,", 3: "Familie", 4: "Scheire en de schepping"}
for i in range(1,4):
    print(woordenboek[i])
print("worden uitgezonden op verschillende zenders.")

Gebruikersavatar
Berichten: 1.605

Re: dictionaries index in range? (python)

Waarom gebruik je?

Code: Selecteer alles

range(1,4)
Waar heb je dat (aan)geleerd in deze situatie en waarom? Wat is de oorspronkelijke opgave? Het lijkt op jouw eigen code bedenksel.

nb. meestal loopt een counter van 0 tot 3 bijvoorbeeld.

EDIT:
Die 1 t/m 4 in jouw range heeft niets te maken met de dict.
Wat ga je doen als jouw dict 125 elementen heeft? De range aanpassen? Hoe wil je dat doen? Alle elemeten tellen?
Laatst gewijzigd door OOOVincentOOO op ma 03 jan 2022, 09:49, 1 keer totaal gewijzigd.

Berichten: 6

Re: dictionaries index in range? (python)

het is de oorspronkelijke opgave ik heb er niets aan gedaan

Gebruikersavatar
Berichten: 1.605

Re: dictionaries index in range? (python)

Volgens mij heb je genoeg informatie wat er mis is. Ik heb alle gebruikelijke methoden gegeven.

Code: Selecteer alles

woordenboek={1: "Dagelijkse kost,", 2:"Het scheldepeleton,", 3: "Familie", 4: "Scheire en de schepping"}
for i in range(1,4):
    print(woordenboek[i])
    print(i)
print("worden uitgezonden op verschillende zenders.")
Lees de waarden van print(i).

Wat gebeurt als je hetvolgende doet?

Code: Selecteer alles

range(1,5)
Indien je iets niet begrijipt kun je bijvoorbeeld een print(i) doen. Zo zie je wat er gebeurt.

EDIT:
Bij programmeren is het heel gebruikelijk +1 of -1 ernaast te zitten. Eigenlijk is de beste leerschool zelf enkele uren te stoeien. Nu leer je weinig alles gepresenteerd te krijgen.

Of Dit:

Code: Selecteer alles

range(4)

Code: Selecteer alles

woordenboek={1: "Dagelijkse kost,", 2:"Het scheldepeleton,", 3: "Familie", 4: "Scheire en de schepping"}
for i in range(4):
    print(woordenboek[i+1])
    print(i)
print("worden uitgezonden op verschillende zenders.")
Laatst gewijzigd door OOOVincentOOO op ma 03 jan 2022, 10:00, 1 keer totaal gewijzigd.

Berichten: 6

Re: dictionaries index in range? (python)

met range(1,5) print de 4e key en value ook af, dat heb ik zelf ook al getest. Mijn vraag is waarom 4 niet wordt afgedrukt met (1,4) aangezien bij dicts in de range niet gewerkt wordt vanaf index 0, maar met de keys.

Gebruikersavatar
Berichten: 1.605

Re: dictionaries index in range? (python)

Heb een edit gedaan (zie voorgaande bericht). Studeer dit:

Code: Selecteer alles

for i in range(4):
    print(i)

for i in range(4):
    print(i+1)
    
for i in range(1,4):
    print(i)
Echt zelf iets proberen. Erg vreemd dat men dit jouw aanleerd:

Code: Selecteer alles

range(1,4)
Welke studie materiaal is dat? Maar het gaat erom zelf ermee te stoeien. Nu leer je zelf nauwelijks iets.

Berichten: 6

Re: dictionaries index in range? (python)

Ok bedankt voor uw hulp! Ku Leuven grondslagen van de beleidsinformatica

Gebruikersavatar
Berichten: 1.605

Re: dictionaries index in range? (python)

Aha, de grondslagen.

Indien iets niet werkt moet je het meetbaar (waarneembaar) maken.

Indien je de index (i) print zie en meet je wat er gebeurt.

Code: Selecteer alles

print(i)
Meten is Weten!

EDIT:
Gebruik print in overvloede! Tenzij je teveel print/meet dan word het weer onoverzichtelijk. Maar dat is een ander verhaal.

Berichten: 6

Re: dictionaries index in range? (python)

:cry: op het examen is het programmeergedeelte op papier

Gebruikersavatar
Berichten: 1.605

Re: dictionaries index in range? (python)

Oei, dan zou ik een slecht examen hebben!

Sucses, probeer zelf veel (praktisch) te oefenen. Er is een valkuil.

Bij het programmeren gaat 100 keer iets fout en 1 keer iets goed. Bij mijzelf!

Wanneer iets goed gaat beloon jezelf met een cola of chocolade (of 15 minuten youtube) :D o.i.d.. Dan koppel je het goede rationele "eenmalige" moment met een emotie!

EDIT:
Dan verbind je het rationele met een emotie (dan herinner je het mogeljjk beter). Echter niet alleen op emotie varen! Altijd blijven denken!

Gebruikersavatar
Moderator
Berichten: 9.994

Re: dictionaries index in range? (python)

sb30 schreef: ma 03 jan 2022, 10:00 met range(1,5) print de 4e key en value ook af, dat heb ik zelf ook al getest. Mijn vraag is waarom 4 niet wordt afgedrukt met (1,4) aangezien bij dicts in de range niet gewerkt wordt vanaf index 0, maar met de keys.
Het gaat niet om een tegenstelling tussen een list of een dictionary.
Een range(a,b) geeft altijd de waardes vanaf a tot (en niet tot en met) b. Dat zijn (b-a) waardes.
Je houdt al rekening met het feit dat de key hier bij 1 begint daar voor a 1 te kiezen.
Maar range(1,4) geeft altijd (4-1)=3 waardes, 1 2 en 3. Je kunt dan dus nooit vier waardes uit de dictionary krijgen.

Reageer