代码之家  ›  专栏  ›  技术社区  ›  Bogdan Janiszewski

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

  •  0
  • Bogdan Janiszewski  · 技术社区  · 8 年前

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

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

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

    循环似乎每次都读取到文件的末尾,并旋转变量 c tally 存在于文件中,因为while循环执行预期功能。

    2 回复  |  直到 8 年前
        1
  •  1
  •   user94559    8 年前

    固定代码:

    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() 在原始循环中。
        2
  •  -1
  •   nitangle    8 年前

    c=line 一定是这样 c=line.strip() .