【问题标题】:For loop seems to only run onceFor循环似乎只运行一次
【发布时间】:2020-05-12 16:04:54
【问题描述】:

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

程序使用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%,所以我怀疑它与处理文件本身的方式有关,但我不知道为什么。

提前感谢您的帮助!

【问题讨论】:

  • 遍历所有行后,没有更多行可遍历。您要么需要为每个名称重新打开文件,要么通过file.seek(0) 倒回到开头。

标签: python file for-loop while-loop


【解决方案1】:

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

【讨论】:

    最近更新 更多