简体   繁体   English

在 Python 中使用户名不区分大小写的好方法是什么? (初级水平)

[英]What is a good way of making usernames case insensitive in Python? (Beginner Level)

I'm still a programming student so this might be very easy for you to answer.我仍然是一名编程学生,所以这对你来说可能很容易回答。

I'm writing some code from the book 'Python Crash Course'.我正在编写《Python 速成课程》一书中的一些代码。 The task I'm on has me 'Make sure my comparison is case insensitive.我正在执行的任务让我'确保我的比较不区分大小写。 If 'John' has been used, 'JOHN' should not be accepted.如果使用了“John”,则不应接受“JOHN”。 To do this you need to make a copy of current_users containing the lowercase versions of all existing users.'为此,您需要制作一份 current_users 的副本,其中包含所有现有用户的小写版本。

Which in my code I have.我的代码中有哪些。 Except it doesn't work.除了它不起作用。

current_users = ['ted', 'jed', 'red', 'ned', 'dr fred']

new_users = ['ted', 'jed', 'bernard', 'hoagie', 'laverne']

for username in new_users:
    if username in current_users:
        print(f"Username {username} is unavailable. Please choose a different username.")
    else:
        print(f"Username {username} is available for use.")

Output: Username ted is unavailable.输出:用户名 ted 不可用。 Please choose a different username.请选择一个不同的用户名。 Username jed is unavailable.用户名 jed 不可用。 Please choose a different username.请选择一个不同的用户名。 Username bernard is available for use.用户名 bernard 可供使用。 Username hoagie is available for use.用户名 hoagie 可用。 Username laverne is available for use.用户名 laverne 可用。 [Finished in 0.3s] 【0.3s完成】

If I change 'ted' to 'Ted' or 'TED' it outputs:如果我将 'ted' 更改为 'Ted' 或 'TED' 它会输出:

Username Ted is available for use.用户名 Ted 可供使用。 Username TED is available for use.用户名 TED 可供使用。

It shouldn't.它不应该。 Have I missed something?我错过了什么吗? Or did Python lose the function for case insensitivity in a recent update?或者 Python 在最近的更新中是否失去了不区分大小写的功能?

EDIT - Thanks for the solutions.编辑 - 感谢您的解决方案。

I would so something like this:我会这样:

current_users = ['ted', 'jed', 'red', 'ned', 'dr fred']

new_users = ['ted', 'JED', 'bernard', 'hoagie', 'laverne']

for username in map(str.lower, new_users):
    if username in map(str.lower, current_users):
        print(f"Username {username} is unavailable. Please choose a different username.")
    else:
        print(f"Username {username} is available for use.")

Basically converting username and all usernames in current_users to the same case基本上将usernamecurrent_users中的所有用户名转换为相同的大小写

Try with this code :尝试使用此代码:

current_users = ['ted', 'jed', 'red', 'ned', 'dr fred']

new_users = ['ted', 'jed', 'bernard', 'hoagie', 'laverne']

for username in new_users:
    if username.lower() in [current_user.lower() for current_user in current_users]:
        print(f"Username {username} is unavailable. Please choose a different username.")
    else:
        print(f"Username {username} is available for use.")

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM