【发布时间】:2019-08-06 13:20:31
【问题描述】:
我有以下代码试图搜索用户名列表,并在第一个输出时简单地返回输出“在索引 i 中找到”或“抱歉用户名未找到”。
usernames=["u1","u2","u3"]
found=False
while found==False:
username=input("Enter username:")
for i in range(len(usernames)):
if username==usernames[i]:
found=True
break
if found==True:
print("Username found in index:",i)
else:
print("Sorry,username not found")
如果用户名正确,当前代码似乎可以工作,但如果使用了错误的数据,例如 23234,那么它会重复问题并且不会跳转到代码底部的 if 语句(这就是我想要的)。
有人可以更正此代码,并解释解决此问题的最有效方法。这可能与布尔标志“找到”有关,我不明白为什么它没有爆发并进入底部 if 语句。提前致谢
【问题讨论】:
-
放置一个else块来处理错误数据
-
“缩进错误”?
-
这并不能回答您关于打破嵌套循环的问题,但考虑一种更简单的方法来确定字符串是否在列表中:
if username in usernames: -
去掉外部的while循环...?
-
你根本不需要 while 循环,只要找到匹配项就设置为 true 就可以了。
标签: python list loops boolean break