2017-02-28 1 views
-2

Quelqu'un peut-il me donner des détails sur ce problème, s'il vous plaît?Python break déclaration détails

for i in range(1,10): 
     if i == 5: 
      break 
     print("number is ", i) 


Output: 
number is 1 
number is 2 
number is 3 
number is 4 

Ma question est: pourquoi ne pas venir 5 ?? J'ai dit ici i == 5 cela signifie que lorsque je la valeur est de 5, il devrait casser et donner le résultat 5.

now, if i > 5: 
     break 
    print(i) 
Output: 
    number is 1 
    number is 2 
    number is 3 
    number is 4 
    number is 5 

ici 5> 5 ce n'est pas vrai. Alors qu'en est-il ??

Et dernière chose si la structure

for i in range(1,10): 
print(i) 
if i < 5: 
    break 

Output: only 1 

Question: le résultat devrait venir au moins 1 à 4. mais n'est pas pourquoi?

Merci à tous. J'espère que vous pouvez comprendre et me donner un détail de mes questions.

+0

Il est parce que vous ' break' avant la déclaration 'print' – anon

+0

Droit, mais voici un autre problème ,,, let, si i> 5: pause Maintenant, vous obtiendrez le numéro est 5 ce qui signifie, il va mal, à cause de 5> 5, faux. qu'en penses-tu copain ?? –

+0

Ne pouvez-vous pas lire le matériel didactique qui accompagne cette mission? – TigerhawkT3

Répondre

4

La raison pour laquelle il n'a pas imprimé 5 est que vous freinez la boucle avant d'atteindre print("number is ", i).

for i in range(1,10): 
     if i == 5: #when i is 5 this will be true 
      break #break the loop exits the loop 
     #----------------------This is not run when i==5 because the loop already ended 
     print("number is ", i) 

si vous voulez imprimer 5

for i in range(1,10): 

    print("number is ", i) #put this in front 
    if i == 5: #when i is 5 this will be true 
      break #break the loop exits the loop 

Et comme une note de côté: range(1,10) est en fait [1,2,3,4,5,6,7,8,9] et dix ne sont pas inclus depuis python saute la dernière

au commentaire de l'OP:

for i in range(1,10): 

    if i > 5: #when i is 5 this will be false, so the loop doesn't break 
      break #break the loop when i > 5 (ie. 6) so now the print() isn't reached and will not print 6 

    print("number is ", i) #since the loop didn't break when i is 5, it printed i 

Pour vos autres deux nouveaux exemples:

for i in range(1,10): 
    if i > 5: 
     break #exits here skips the print since it's after this 
    print(i) #the print statement is here so when i > 5 this is not reached 
#on the other hand: 
for i in range(1,10): 
    print(i) #the print statement is in front of the break statement so now it will print 6 too since the loop hasn't break yet 
    if i > 5: 
     break #exits here after the print() 
#output also includes 6 

Et dernière chose si la structure

for i in range(1,10): 
    print(i) #only 1 got printed since the loop break before it get to 2 
    if i < 5: #when i < 5 so it breaks in the first loop when i is 1 
     break #exits the loop 

vous pouvez consulter this et voir si elle aide

+0

Hmm, Merci pour votre précieux commentaire, Mais j'ai une autre question. si i> 5: casse impression (i) Sortie: 1,2,3,4,5 ici est 5> 5. Faux . Ce n'est pas vrai . pourquoi ai-je vu ce résultat ?? Je me sens totalement désordre :( –

+0

l'esprit l'écrit dans votre message original comme un edit? Il est difficile de le lire dans les commentaires @VubonRoy – abccd

+0

J'ai édité ma question.Merci merci pour votre aide :) –

1

Sur l'itération i = 5, vous passez la condition de votre test if et exécutez le bloc then de votre instruction, qui consiste en break. L'instruction break vous oblige à quitter la boucle. L'instruction print fait partie du corps de la boucle et n'est jamais atteinte sur l'itération où i = 5.