Gebruikersavatar
Strobo
Artikelen: 0
Berichten: 147
Lid geworden op: zo 17 jan 2010, 11:46

Programmeren in python

Afbeelding

Ik heb een probleem in Python.

In de bijgevoegde code heb ik deze in het rood omkaderd.

De bedoeling is de lengte van "anal2" en "sim" gelijk te krijgen.
if len(anal2) != len(sim):
We stellen dus als dit niet gelijk is we het minimum bepalen van de lengte van beide reeksen, deze noemen we de "lim".
lim = min(len(anal2), len(sim))
Maar aan de laatste stap kan ik niet uit wat er gebeurd? We herdefiniëren "sim" als volgt.
sim = sim[:lim-len(sim))]
Kan iemand me uitleggen wat er hier gebeurd? Want heb er al een hele tijd over liggen nadenken en kom er maar niet op.. Want als "lim" gelijk is aan "len(sim)" dan wordt je lengte van de nieuwe "sim" toch 0?
Whenever people agree with me I always feel I must be wrong.
EvilBro
Artikelen: 0
Berichten: 7.081
Lid geworden op: vr 30 dec 2005, 09:45

Re: Programmeren in python

Code: Selecteer alles

if len(a) != len(b):

   lim = min(len(a), len(b))

   a = a[:(lim - len(a))]
Stel dat len(a) = 15 en len(b) = 10, wat is dan lim-len(a)?
Gebruikersavatar
Strobo
Artikelen: 0
Berichten: 147
Lid geworden op: zo 17 jan 2010, 11:46

Re: Programmeren in python

In dat geval is het -5. Maar is het dan zo dat je de 5de laatste term in a dan pakt als nieuwe laatste term?
EvilBro schreef:

Code: Selecteer alles

if len(a) != len(b):

   lim = min(len(a), len(b))

   a = a[:(lim - len(a))]
Stel dat len(a) = 15 en len(b) = 10, wat is dan lim-len(a)?
Maar in ons geval staat er:
EvilBro schreef:

Code: Selecteer alles

if len(a) != len(b):

   lim = min(len(a), len(b))

   a = a[:(lim - len(b))]
Stel dat len(a) = 15 en len(b) = 10, wat is dan lim-len(b)?
En dan is het toch 0?
Whenever people agree with me I always feel I must be wrong.
EvilBro
Artikelen: 0
Berichten: 7.081
Lid geworden op: vr 30 dec 2005, 09:45

Re: Programmeren in python

In dat geval is het -5. Maar is het dan zo dat je de 5de laatste term in a dan pakt als nieuwe laatste term?
Geen idee. Mijn punt is dat het stukje code niet lijkt te doen wat het zou moeten doen. Misschien vergis ik me daarin.
En dan is het toch 0?
Maar dat lost je probleem toch niet op als len(b) > len(a). Het moet voor beide situaties werken.Waarom staat er niet gewoon iets als:

Code: Selecteer alles

 

sim = sim[0:lim]
Gebruikersavatar
Strobo
Artikelen: 0
Berichten: 147
Lid geworden op: zo 17 jan 2010, 11:46

Re: Programmeren in python

Dat vroeg ik mij ook af.. Zou logischer zijn denk ik?

Maar er zal wel een reden zijn?
Whenever people agree with me I always feel I must be wrong.
EvilBro
Artikelen: 0
Berichten: 7.081
Lid geworden op: vr 30 dec 2005, 09:45

Re: Programmeren in python

Als de lengte van sim de kleinste van de twee is dan wordt sim gelijk aan sim[:0] en dat is een lege lijst. Dat lijkt mij niet goed.
Gebruikersavatar
Strobo
Artikelen: 0
Berichten: 147
Lid geworden op: zo 17 jan 2010, 11:46

Re: Programmeren in python

Dat is ook wat ik dacht.. Vreemd.
Whenever people agree with me I always feel I must be wrong.
EvilBro
Artikelen: 0
Berichten: 7.081
Lid geworden op: vr 30 dec 2005, 09:45

Re: Programmeren in python

Code aanpassen, runnen en kijken wat er gebeurt.
Gebruikersavatar
Kravitz
Artikelen: 0
Berichten: 3.963
Lid geworden op: ma 05 okt 2009, 21:46

Re: Programmeren in python

Verplaatst naar programmeren.
"Success is the ability to go from one failure to another with no loss of enthusiasm" - Winston Churchill

Terug naar “Informatica en programmeren”