对于需要不区分大小写输入的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
循环之前,但这只会导致语法错误。
答案 0 :(得分:4)
您可以将每个新用户名转换为小写,并将其与用户列表的小写版本(使用列表推导创建)进行比较。
lower_case_users = [user.lower() for user in current_users]
if new_user.lower() in lower_case_users:
# Name clash
您可能希望在首次创建用户名时将其存储为小写,以避免从用户列表中创建小写版本。