Springen naar inhoud

Programmeren in python


  • Log in om te kunnen reageren

#1

Strobo

    Strobo


  • >100 berichten
  • 147 berichten
  • Ervaren gebruiker

Geplaatst op 06 juni 2011 - 11:31

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

Dit forum kan gratis blijven vanwege banners als deze. Door te registeren zal de onderstaande banner overigens verdwijnen.

#2

EvilBro

    EvilBro


  • >5k berichten
  • 6703 berichten
  • VIP

Geplaatst op 06 juni 2011 - 11:38

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

#3

Strobo

    Strobo


  • >100 berichten
  • 147 berichten
  • Ervaren gebruiker

Geplaatst op 06 juni 2011 - 11:42

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?

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:

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?

Veranderd door Strobo, 06 juni 2011 - 11:46

Whenever people agree with me I always feel I must be wrong.

#4

EvilBro

    EvilBro


  • >5k berichten
  • 6703 berichten
  • VIP

Geplaatst op 06 juni 2011 - 12:21

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:
sim = sim[0:lim]

#5

Strobo

    Strobo


  • >100 berichten
  • 147 berichten
  • Ervaren gebruiker

Geplaatst op 06 juni 2011 - 12:28

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.

#6

EvilBro

    EvilBro


  • >5k berichten
  • 6703 berichten
  • VIP

Geplaatst op 06 juni 2011 - 12:38

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.

#7

Strobo

    Strobo


  • >100 berichten
  • 147 berichten
  • Ervaren gebruiker

Geplaatst op 06 juni 2011 - 12:43

Dat is ook wat ik dacht.. Vreemd.
Whenever people agree with me I always feel I must be wrong.

#8

EvilBro

    EvilBro


  • >5k berichten
  • 6703 berichten
  • VIP

Geplaatst op 06 juni 2011 - 12:45

Code aanpassen, runnen en kijken wat er gebeurt.

#9

Kravitz

    Kravitz


  • >1k berichten
  • 4042 berichten
  • Moderator

Geplaatst op 06 juni 2011 - 13:01

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





0 gebruiker(s) lezen dit onderwerp

0 leden, 0 bezoekers, 0 anonieme gebruikers

Ook adverteren op onze website? Lees hier meer!

Gesponsorde vacatures

Vacatures