While - opl

Beide versies gedragen zich op precies dezelfde manier wanneer de lijst getallen minstens één negatief getal bevat. Bevat de lijst geen enkel negatief getal, dan zal het eerste fragment “Niet gevonden” afdrukken, maar zal het tweede fragment helaas ‘crashen’. De while-lus zal nog een laatste keer uitgevoerd worden waarbij i de lengte van de lijst getallen als waarde heeft, en op dat moment is getallen[i] geen geldige opdracht meer - de index i komt nu immers net voorbij het einde van de lijst.

Dat versie A wel werkt, komt door de manier waarop Python met and omgaat. Als de uitdrukking vóór de and reeds de waarde false heeft, wordt de uitdrukking na de and niet meer uitgewerkt, de waarde van de volledige and-uitdrukking zal immers hoe dan ook false zijn. Dit heet luie evaluatie. (Ook or wordt lui geëvalueerd: als het deel vóór de or reeds true is, wordt het tweede deel niet meer uitgewerkt.)

→ Naar de vraag