2017-09-05 2 views
-1
i = 1 
for k in (range(1, 21)): 
    if i % k > 0: 
    for j in range(1, 21): 
     if (i*j) % k == 0: 
     i *= j 
     break 

print (i) 

Ausgang: 232792560Warum wird die if-Anweisung fortgesetzt, wenn die Bedingung fehlschlägt/fortfahren, nachdem die Bedingung erfüllt wurde?

Dieser Code geschrieben wird von allen Zahlen zwischen 1 bis 20.

Meine Frage das kleinste Vielfache teilbar zu finden ist, warum nicht auch weiterhin die "if i % k > 0" wenn 1 % 1 == 0? (Linie 3)

und warum es weitergeht nach "if (i*j) % k == 0" (Zeile 5) einmal j und k sind 2 statt zu brechen?

+1

Nicht sicher, wie das Programm funktionieren soll, aber ein 'break' bricht nur eine' for' Schleife. Für eine "vollständige Unterbrechung" können Sie eine Anweisung "return" in einer Funktion verwenden. – Julien

Antwort

1

Die Aussage Pause wird nur aus der inneren Schleife brechen. Um aus beiden herauszubrechen, was ich von dir vermute, willst du eine boolsche Bedingung.

Sie können eine Variable direkt vor der break-Anweisung auf 'True' setzen und außerhalb der inneren Schleife die Bedingung prüfen, um festzustellen, ob sie wahr ist. Wenn dies der Fall ist, ist die break-Anweisung erfüllt, sodass Sie eine andere break-Anweisung verwenden können, um die äußere Schleife zu beenden.

Verwandte Themen