2017-08-02 211 views
0

我有一个while循环,通常效果很好,但我想将它转换为for循环。 while循环如下:将while循环转换为for循环时意外的结果

with open(filename) as a: 
while tally != c: 
    line = a.readline() 
    c = line.strip() 

当我打开一个文件,读取每一行,直到我找到我感兴趣的行中的for循环如下:

with open(filename) as a: 
for line in enumerate (a): 
    if tally == c: 
     break 
    elif tally != c: 
     c = line 

看来,循环每次只读取文件末尾,并将变量c变成由随机数和文件最后一行组成的元组。我知道文件中存在tally中包含的字符串,因为while循环执行预期的功能。

+0

'c = line'与'c = line.strip()'不同。 – smarx

+0

另外,'对于a中的行,而不是'列举(a)'中的行。 – smarx

+0

我假设问题代码中的缩进问题只是复制/粘贴中引入的错误。 – smarx

回答

1

固定码:

with open(filename) as a: 
    for line in a: 
     if tally == c: 
      break 
     else: 
      c = line.strip() 

两个问题:

  1. for line in enumerate(a)意味着line获得的行号的每一次迭代,并从文件中的实际行的元组。请阅读enumerate以了解其用途。
  2. c = line与原始循环中的c = line.strip()不同。
+0

现在我拉来的文件“enumerate”也更有意义,谢谢! –

-1

而不是c=line它必须是c=line.strip()

+0

对不起!由smarx line.strip()回答必须使用。我编辑了我的答案。 – nitangle