2017-08-16 15 views
0

これは愚かな質問かもしれませんが、for loopからwhile loopに変換するにはどうすればよいですか。whileループをwhileループのpythonに変換する

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 loop

の途中でbreak文を持っている場合、これはこれまでのところ私のコードであるようにwhileループの構造は見えないものを知りたかったので、なぜあなたは私を求めている場合

ザ・ループのために誤りがないが、私を悩ませいただきました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) 

は同じであり、 10

これはどのように可能ですか?

+0

これは同じではありません。期間。 – tilz0R

+0

私はすべての3つのコードが同じではないことを知っていますが、私は私のプログラムを実行すると、同じ出力を生成します:/ –

+0

しかし、私たちは不幸にも入力と出力は何か分かりません。 – tilz0R

答えて

0

コードは同じではありません。

最初のwhileループでは、iが内部で増分されないため、無限ループで終了します。 2番目の例では、ijコードを分けています。

の2番目のコードに欠けているものは、ループを開始する前に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)