如何进行不区分大小写的字符串比较?

时间:2016-08-31 01:37:10

标签: python

对于需要不区分大小写输入的Python练习,我有点困惑。

令我困惑的这部分练习:

  

确保您的比较不区分大小写。如果约翰'已被使用,' JOHN'不应被接受。

这是我的代码:

current_users = ['username_1', 'username_2', 'username_3', 'username_4',
                 'username_5']
new_user = ['new_user_1', 'new_user_2', 'new_user_3', 'username_1', 'Username_2']

for username in new_user:
    if username in current_users:
        print("Please enter a new username.")
    elif username not in current_users:
        print("This username is available.")

我的问题是我试图让我的代码拒绝" Username_2"因为首都" U"但我不知道该怎么做。我正在阅读Eric Matthes撰写的 Python Crash Course ,目前正在阅读第5章,但我不记得有人教过如何拒绝不区分大小写的输入。

我知道upper()lower()title()字符串方法,我尝试使用:

username.lower() == username.upper()

new_user.lower() == new_user.upper()

在我的for循环之前,但这只会导致语法错误。

1 个答案:

答案 0 :(得分:4)

您可以将每个新用户名转换为小写,并将其与用户列表的小写版本(使用列表推导创建)进行比较。

lower_case_users = [user.lower() for user in current_users]
if new_user.lower() in lower_case_users:
    # Name clash

您可能希望在首次创建用户名时将其存储为小写,以避免从用户列表中创建小写版本。