Python 为什么for循环在列表末尾返回一个空列表值?

Python 为什么for循环在列表末尾返回一个空列表值?,python,Python,我编写了一段简单的Python代码,用来比较列表当前的_用户名(正在尝试登录的用户)和列表用户名(已经登录的用户)。如果current\u usernames中的用户已在usernames中,则将拒绝该用户,否则将向该用户致意。如果当前的\u用户名中没有用户,那么应该只有一个输出说明:此时系统中没有用户 代码: usernames = ["User1", "User2", "User3", "User4", "User5", "Admin"] current_usernames = ["User

我编写了一段简单的Python代码,用来比较列表
当前的_用户名
(正在尝试登录的用户)和列表
用户名
(已经登录的用户)。如果
current\u usernames
中的用户已在
usernames
中,则将拒绝该用户,否则将向该用户致意。如果
当前的\u用户名中没有用户
,那么应该只有一个输出说明:
此时系统中没有用户

代码

usernames = ["User1", "User2", "User3", "User4", "User5", "Admin"]
current_usernames = ["User6", "User7", "User3", "User8", "User5"]

for current_user in current_usernames:
    if current_user not in usernames:
        if current_user == "Admin":
            print("Hello Admin!!! Welcome back!")
        else:
            print("Hello " + current_user)
    else:
        print("Sorry, " + current_user + " is already logged in.")
else:
    print("There are no users in the system at this point!")
输出:

Hello User6 
Hello User7
Sorry, User3 is already logged in.
Hello User8
Sorry, User5 is already logged in.
There are no users in the system at this point!
问题:

Hello User6 
Hello User7
Sorry, User3 is already logged in.
Hello User8
Sorry, User5 is already logged in.
There are no users in the system at this point!
为什么for循环返回
此时系统中没有用户在循环的末尾


我希望循环在
Hello User5
之后停止,因为
当前的\u用户名中没有更多的用户。

for
循环的
else
子句在循环正常完成时触发,而不是通过
break
语句。由于循环不包含
中断
,因此将始终触发
其他

else
子句背后的思想是更容易编写类似线性搜索的内容:

for x in sequence:
    if x == key:
        print('found it')
        break
else:
    print('Not found')
您似乎混淆了
for
循环后面的
else
和条件语句中通常出现的
else
以下内容可以满足您的要求:

if current_users:
    for current_user in current_usernames:
       ...
else:
    print('No users currently trying to get into the system')

for
循环的
else
子句在循环正常完成时触发,而不是通过
break
语句触发。由于循环不包含
中断
,因此将始终触发
其他

else
子句背后的思想是更容易编写类似线性搜索的内容:

for x in sequence:
    if x == key:
        print('found it')
        break
else:
    print('Not found')
您似乎混淆了
for
循环后面的
else
和条件语句中通常出现的
else
以下内容可以满足您的要求:

if current_users:
    for current_user in current_usernames:
       ...
else:
    print('No users currently trying to get into the system')

你会在这里得到一个解释:你会在这里得到一个解释:是的,如果在开始的建议声明修复了它!感谢您对中断声明的帮助和解释。@Arash。这是一个非常模糊的结构,可以追溯到语言的开始。现在几乎每个用例都有更方便的构造,所以很少有人遇到它。是的,开始时的if语句建议修复了它!感谢您对中断声明的帮助和解释。@Arash。这是一个非常模糊的结构,可以追溯到语言的开始。现在几乎每个用例都有更方便的构造,所以很少有人遇到它。