Python 而回路似乎运行不正常

Python 而回路似乎运行不正常,python,while-loop,Python,While Loop,我正在从事一个python项目,在该项目中,我使用while循环。独特的东西。然而,我无法让循环为我完成它的工作 我的代码: with open("accounts.txt", "r") as account_file: while account == "": account = str(input("Enter a username: ") + " ")

我正在从事一个python项目,在该项目中,我使用
while
循环。独特的东西。然而,我无法让循环为我完成它的工作

我的代码:

with open("accounts.txt", "r") as account_file:
    while account == "":
        account = str(input("Enter a username: ") + " ")
        if account not in account_file.read():
            print("That username was not found.")
            account = ""
当我运行此命令时,它会提示我输入用户名,如果在
accounts.txt
中可以找到我输入的字符串(加上一个空格),我会被告知可以找到我的用户名

如果我输入了一个无效的用户名,程序应该告诉我它找不到我输入的用户名,然后让我再试一次-除非我在下一次尝试中正确输入用户名,否则程序仍然告诉我找不到我的用户名

我试着做了这样的改变:

if account in account_file.read():
    account = account
else:
    print("That username was not found.")
    account = ""
它仍然不能正常工作

谁能告诉我为什么


我只是在寻找一个简单的解决方案。

当我最初回答你的帖子时,我假设你想找到文件中用户名所在的行。 如果您对查找用户名所在的特定行不感兴趣,只希望循环一直持续到输入有效用户名为止,那么您应该知道,在打开文件后,只能对文件调用一次
read()

考虑这样做:

while account==“”:
account=str(输入(“输入用户名”)+“”)
打开(“accounts.txt”、“r”)作为帐户文件:
如果帐户不在帐户文件.read()中:
打印(“未找到该用户名”)
account=“”
如果您确实需要用户名所在的行,您可能需要以下内容:

打开(“accounts.txt”、“r”)作为帐户文件:
account=str(输入(“输入用户名”)+“”)
对于帐户_文件中的行:
如果账户符合要求:
打印(“找到的用户名”)
打破

Matt在下面给出了一个很好的答案。但也要考虑到,在第一次尝试中,你打开了代码>帐号文件一次,然后在每个循环迭代中读取(即消耗)它。除非你跳过特殊的箍环(你没有),否则你只能
.read()
一次文件。@KirkStrauser接得好!我会更新我的答案。谢谢,但是如果我输入了一个错误的用户名,它将不会再次提示我…第二个代码段没有包装在循环中,并且在输入错误的用户名时确实不会循环。我测试了第一个代码片段,它确实为我循环,但也许我的测试版本
accounts.txt
看起来不同?糟糕,我的错-我没有看到第一个代码片段,但我已经测试过了,它工作得很好!万分感谢!