Warum ist das in Python eine Endlosschleife?

7

Ich kann nicht herausfinden, warum dies eine unendliche Schleife in Python ist?

%Vor%

sollte nicht die äußere Schleife n mal gehen. Inkrementieren von j bis es jedes Mal n div i ist?

    
Matt Phillips 12.01.2010, 17:40
quelle

9 Antworten

36

i beginnt bei 0 , so dass die Bedingung while immer wahr ist; Ausführliche Informationen finden Sie in den Bereich-Dokumentationen .

    
Michał Marczyk 12.01.2010, 17:42
quelle
16

Sie können eine "Kurve" erstellen, die die Zustandsänderungen der Variablen anzeigt.

  1. n = 5; i = 0
  2. n = 5; i = 0; j = 1
  3. i * j & lt; n - & gt; 0 & lt; 5: n = 5; i = 0; j = 2
  4. i * j & lt; n - & gt; 0 & lt; 5: n = 5; i = 0; j = 3
  5. i * j & lt; n - & gt; 0 & lt; 5: n = 5; i = 0; j = 4
  6. i * j & lt; n - & gt; 0 & lt; 5: n = 5; i = 0; j = 5
  7. i * j & lt; n - & gt; 0 & lt; 5: n = 5; i = 0; j = 6

usw.

Sie können beweisen, dass Ihre Ablaufverfolgung korrekt ist, indem Sie print -Anweisungen einfügen.

Drucken Sie es im Zweifelsfall aus.

    
S.Lott 12.01.2010 18:27
quelle
12

i beginnt bei Null, also ist die Bedingung für die innere Schleife immer 0*j < n , was immer wahr ist.

    
sth 12.01.2010 17:43
quelle
7

Weil der Anfangswert von i 0 ist.

    
mob 12.01.2010 17:42
quelle
4

Der erste Wert in i ist 0. 0 mal alles ist 0.

    
Ignacio Vazquez-Abrams 12.01.2010 17:42
quelle
2

weil ich 0 bin !! und i * j = 0     

Yin Zhu 12.01.2010 17:43
quelle
2

range(n) beginnt bei 0 , nicht 1 . 0 * j wird immer kleiner als n sein.

    
Adam Crossland 12.01.2010 17:43
quelle
1

Beim ersten Mal durch die äußere Schleife wird die innere Schleife eine Endlosschleife. Es ist egal, was danach passiert. Es gibt kein "nach der Unendlichkeit".

    
Matthias Wandel 12.01.2010 17:43
quelle
0

i ist 0 schreiben Sie Schleife wie

um %Vor%

Bei Verwendung dieser Version der Bereichsfunktion wird ein Bereich erstellt, der bei 1 statt 0 beginnt

    
RHicke 12.01.2010 18:25
quelle

Tags und Links