2017-08-16 1 views
0

Je sais que cela peut être une question idiote, mais comment faire la conversion de for loop à while loop correctement. Si vous me demandez pourquoi, parce que je voulais savoir ce que fait la structure d'une boucle while ressemble si vous avez la déclaration break au milieu d'un double for loopConversion imbriquée pour la boucle à tout en boucle python

Ceci est mon code à ce jour:

genelist = [] 
integer = 0 
for i in range(0, len(first_genome)): 
    for j in range(0, len(second_genome)): 
     integer = integer + 1 
     if first_genome[i] == second_genome[j]: 
      genelist.append(first_genome[i]) 
      break 
return(genelist, integer) 

la boucle for a pas d'erreur, mais ce qui est me tracasse que ce code pour la boucle while:

genelist = [] 
    integer = 0 
    i = 0 
    j = 0 
    while i < len(first_genome): 
     while i < len(second_genome): 
      integer = integer + 1 
      if first_genome[i] == second_genome[j]: 
       genelist.append(first_genome[i]) 
       j = j + 1 
       break 
     i = i + 1 
    return(genelist, integer) 

est le même que:

genelist = [] 
    integer = 0 
    i = 0 
    j = 0 
    while i < len(first_genome): 
     while j < len(second_genome): 
      integer = integer + 1 
      if first_genome[i] == second_genome[j]: 
       genelist.append(first_genome[i]) 
       j = j + 1 
       break 
     i = i + 1 
    return(genelist, integer) 

Comment est-ce encore possible?

+0

Ce n'est pas la même chose. Période. – tilz0R

+0

Je suis conscient que tous les 3 codes ne sont pas les mêmes mais quand je cours mon programme il produit la même sortie:/ –

+0

Mais nous ne savons pas ce qui est entré et quelle sortie, malheureusement. – tilz0R

Répondre

0

Les codes ne sont pas identiques.

Dans la première boucle while, vous terminez en boucle infinie car i n'est jamais incrémenté à l'intérieur. Dans le deuxième exemple, vous avez séparé les codes i et j.

Que vous manque sur deuxième code est j = 0 avant de commencer la boucle while intérieure.

genelist = [] 
integer = 0 
i = 0 
j = 0 
while i < len(first_genome): 
    j = 0 #Added this 
    while j < len(second_genome): 
     integer = integer + 1 
     if first_genome[i] == second_genome[j]: 
      genelist.append(first_genome[i]) 
      j = j + 1 
      break 
    i = i + 1 
return(genelist, integer)