2017-08-16 190 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)