将while循环转换为for循环时出现意外结果

时间:2017-08-02 16:38:12

标签: python-2.7 loops for-loop while-loop

我有一个通常运行良好的while循环,但我想将它转换为for循环。 while循环如下:

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循环执行预期的功能。

2 个答案:

答案 0 :(得分: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()不同。

答案 1 :(得分:-1)

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