我正在通过Python Crash Course一书工作,我正在完成这项任务。
执行以下操作以创建一个程序,模拟网站如何确保每个人都拥有唯一的用户名。
- 列出五个或更多名为
current_users
的用户名。- 制作另一个名为
new_users
的五个用户名列表。确保一个或两个新用户名也在current_users
列表中。- 循环浏览
new_users
列表,查看是否已使用每个新用户名。如果有,则打印一条消息,表明此人需要输入新用户名。如果未使用用户名,请打印一条消息,说明用户名可用。- 确保您的比较不区分大小写。如果已使用
'John'
,则不应接受'JOHN'
。
我可以看到一个列表中的用户名是否在另一个列表中。
current_users = ["John", "Admin", "Jack", "Ana", "Natalie"]
new_users = ["Pablo", "Donald", "Calvin", "Natalie", "Emma"]
for username in new_users:
if username in current_users:
print("Username unavailable.")
else:
print("Username available.")
现在对于不区分大小写的部分我知道.lower()方法,但不知道如何在循环中将列表项转换为小写。我可以做if username.lower() in current_users
,这是行不通的,因为我需要以某种方式隐藏current_users。是否有更好的方法,然后在循环之前对两个列表执行.lower()
。
答案 0 :(得分:1)
您应该将current_users
转换为小写集,然后对每个新用户进行快速比较,只是小写,例如:
current_users = ["John", "Admin", "Jack", "Ana", "Natalie"]
new_users = ["Pablo", "Donald", "Calvin", "Natalie", "Emma"]
current_users_lookup = {user.lower() for user in current_users}
for user in new_users:
if user.lower() in current_users_lookup:
print("Username {} unavailable.".format(user))
else:
print("Username {} available.".format(user))
哪能得到你:
Username Pablo available. Username Donald available. Username Calvin available. Username Natalie unavailable. Username Emma available.
答案 1 :(得分:0)
您可以使用lowerCase字符创建一个新列表,然后使用它进行检查。
current_users = ["John", "Admin", "Jack", "Ana", "Natalie"]
new_users = ["Pablo", "Donald", "Calvin", "Natalie", "Emma"]
current_users_lower = map(str.lower,current_users)
for username in new_users:
if username.lower() in current_users_lower:
print("Username unavailable.")
else:
print("Username available.")
答案 2 :(得分:0)
在进行测试之前将所有内容转换为小写:
current_users = ["John", "Admin", "Jack", "Ana", "Natalie"]
new_users = ["Pablo", "Donald", "Calvin", "Natalie", "Emma"]
current_users = [x.lower() for x in current_users]
new_users = [x.lower() for x in new_users]
如果您是Python的新手,则称为List Comprehensions。
for username in new_users:
if username in current_users:
print("Username unavailable.")
else:
print("Username available.")
或者,如果用户名的第一个字母始终大写,则可以使用.title()
for username in new_users:
if username.title() in current_users:
print("Username unavailable.")
else:
print("Username available.")