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

2024-04-20 06:43:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我编写了一段简单的Python代码,用来比较listcurrent_usernames(尝试登录的用户)和listusernames(已经登录的用户)。如果来自current_usernames的用户已经在usernames中,该用户将被拒绝,否则该用户将受到欢迎。如果current_usernames中没有用户,那么应该只有一个输出,即:There are no users in the system at this point。你知道吗

代码

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!

问题:

为什么for循环在循环的末尾返回There are no users in the system at this point!?你知道吗

我希望循环在Hello User5之后停止,因为在current_usernames左侧没有更多的用户。你知道吗


Tags: theno用户inhellocurrentthissystem
1条回答
网友
1楼 · 发布于 2024-04-20 06:43:34

for循环的else子句在循环正常完成时触发,而不是通过break语句触发。由于循环不包含break,因此else将始终被触发。你知道吗

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

for x in sequence:
    if x == key:
        print('found it')
        break
else:
    print('Not found')

似乎您混淆了else循环后面的for和通常在条件语句中找到的else以下内容将满足您的要求:

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

相关问题 更多 >