微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决尽管进行了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.")

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。