首页 > 解决方案 > For循环似乎只运行一次

问题描述

作为项目的一部分,我构建了一个非常简单的程序,用于检查给定字符串是否存在于提供的文本文件中。

程序使用循环检查输入是否等于文件的每一行,for如果值对应则返回 True,否则返回 False。

with open (names, "r") as file:
    while True: 
        name_check = input("name: ")
        if name_check == "":
            #command to end the program

            break
        for newline in file:
            #compares the input with every line in the txt file

            newline_stripped = newline.lower().strip()
            if newline_stripped == name_check:         

                print (True)
            else:
                print (False)
    file.close()

问题是,当我运行代码时,第一次迭代工作正常,它按预期返回一个 False 和 True 序列,然后要求另一个输入,但是当再次给出所述输入时,它立即要求另一个输入,没有返回任何序列,就好像整个for循环被跳过一样。

我尝试通过使用数字列表而不是文本文件作为源(经过适当修改)来运行它,并且它按预期运行 100%,所以我怀疑它与处理文件本身的方式有关,但我可以不知道为什么。

提前感谢您的帮助!

标签: pythonfilefor-loopwhile-loop

解决方案


您在第一次迭代时遍历整个文件,因此第二次迭代没有任何内容可供阅读。您可以在每次迭代时打开文件,也可以将位置移动到开头file.seek(0)


推荐阅读