2017-08-16 207 views
0

我知道這可能是一個愚蠢的問題,但如何從轉換到for loop正確while loop。如果你問我爲什麼,因爲我想知道什麼呢while循環的結構看起來像,如果你有一個雙for loop嵌套轉換被for循環while循環蟒蛇

中間break聲明這是我到目前爲止的代碼:

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) 

for循環沒有錯誤,但什麼困擾着我,這個代碼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) 

是一樣的:

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) 

這怎麼可能?

+0

這是不一樣的。期。 – tilz0R

+0

我知道所有的3個碼不一樣的,但是當我運行我的程序它產生相同的輸出:/ –

+0

但我們不知道什麼是輸入和輸出什麼,很遺憾。 – tilz0R

回答

0

代碼是不一樣的。

在第一循環的同時,你在無限循環結束,因爲i從未內部遞增。 在第二個示例中,您已將ij代碼分開。

什麼是你的第二個代碼缺少的是j = 0開始內部while循環之前。

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)