尽管进行了if / else测试,我的用户名检查器一直说所有名称都可用

问题描述

我正在尝试制作一个简单,小型的练习程序,使用if-elif-else语句检查用户名

current_users = ['Enrique','Jose','Pablo','John','Jake']
new_users = ['Mike','Tom','Bowser','Howard','Ben']

'''for user in current_users:
        user = user.lower()
        print(user)

   for user in new_users:
        user = user.lower()
        print(user)
'''


for user in new_users:
    if user.lower() == current_users:
        print(f"{user}: That username is taken.")
    else:
        print(f"{user}: That username is available.")

我希望它为在new_user列表和current_user列表上的用户名显示消息“用户名已被占用”,但是,当我在Sublime文本编辑器中运行它们时,它们都将评估True。 / p>

我知道这是一个逻辑错误,因为没有给出任何实际的错误消息,但是我还不太清楚。

我尝试通过检查new_users列表中的用户名是否不是current_users列表中的用户名来反转循环。

如您所见,我尝试将所有用户名更改为小写以查看是否有帮助,但这没有帮助。

解决方法

当您在列表中查找值时,请使用“ in”运算符。

    current_users = ['Enrique','Jose','Pablo','John','Jake']
    new_users = ['Mike','Tom','Bowser','Howard','Ben']


    for user in new_users:
        if user in current_users:
            print(f"{user}: That username is taken.")
        else:
            print(f"{user}: That username is available.")
,

问题是您正在将字符串与字符串列表user.lower() = current_user进行比较。

此外,您正在将user.lower()user进行比较。

示例表示"Jhon".lower() == "Jhon"将给您False

请尝试:

创建一个current_user的临时列表,所有名称均小写 然后检查它是否已经使用或可用。

current_users = ['Enrique','Jake']
new_users = ['Mike','Ben']

t_current_user = [x.lower() for x in current_users]

for user in new_users:
    if user.lower() in t_current_user:
        print(f"{user}: That username is taken.")
    else:
        print(f"{user}: That username is available.")