python - while 循环似乎无法正常运行
问题描述
我正在开发一个使用while
循环的python项目。独特的东西。但是,我无法让循环为我完成它的工作。
我的代码:
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(input("Enter a username: ") + " ")
with open("accounts.txt", "r") as account_file:
if account not in account_file.read():
print("That username was not found.")
account = ""
如果您确实想要用户名所在的行,您可能想要这样的东西:
with open("accounts.txt", "r") as account_file:
account = str(input("Enter a username: ") + " ")
for line in account_file:
if account in line:
print("Found username")
break
推荐阅读
- kotlin - Kotlin:当谓词满足时停止迭代的函数
- laravel-migrations - 在 laravel 迁移中使用 UUID 作为默认值
- javascript - Highcharts 将变量传递给工具提示
- javascript - 如何在javascript中重新排列数组
- c++ - 连接池析构函数阻止子对象析构函数中的网络通信
- go - redigo 是否重新连接到服务器?
- windows - Windows 操作系统的电源选项或注册表中的屏幕唤醒设置?
- highcharts - 当大量 x 轴刻度时,Highcharts 仅显示特定刻度
- ads - 在网站上轮换 CPM 广告的简单算法
- powershell - 导出 Csv 帮助 PowerShell