自学python第十天:动手练一练
自学python第十天:动手练一练
习题1:
检查用户名按照下面的说明编写一个程序,模拟网站如何确保每个用户的用户名都独一无二。
创建一个至少包含 5 个用户名的列表,并将其命名为current_users。
再创建一个包含 5 个用户名的列表,将其命名为 new_users,并确保其中有一两个用户名也在列表 current_users 中。
遍历列表 new_users,检查其中的每个用户名是否已被使用。如果是,就打印一条消息,指出需要输入别的用户名;否则,打印一条消息,指出这个用户名未被使用。
确保比较时不区分大小写。换句话说,如果用户名 'John' 已被使用,应拒绝用户名 'JOHN'。(为此,需要创建列表current_users 的副本,其中包含当前所有用户名的全小写版本。)
代码:
# 创建当前用户名列表(包含大小写混合)
current_users=['Admin','administrator','user','Guest','admin123']
# 创建新用户名列表(包含部分已存在的用户名)
new_users=['admin','GUEST','Xiaoxiao','SHENMI','Moji']
# 创建当前用户名的全小写副本用于不区分大小写比较
new_users_lower=[users.lower() for users in current_users]
# 检查每个新用户名
print(new_users_lower)
print("\n"+"-"*40+"\n")
for users in new_users:
# 将当前检查的用户名转为小写进行比较
if users.lower() in new_users_lower:
print(f"此用户已存在{users}")
else:
print(f"此用户未被使用{users}")
结果:
['admin', 'administrator', 'user', 'guest', 'admin123']
----------------------------------------
此用户已存在admin
此用户已存在GUEST
此用户未被使用Xiaoxiao
此用户未被使用SHENMI
此用户未被使用Moji
代码解释:
new_users_lower=[users.lower() for users in current_users]
释义:列表推导式(list comprehension)来创建一个新的列表`current_users_lower`
它的作用是将`current_users`列表中的每个用户名转换为小写形式,并存储在新的列表中
具体步骤:
1. 遍历`current_users`列表中的每个元素(每个用户名)。
2. 对每个用户名调用`.lower()`方法,将其转换为小写。
3. 将所有转换后的小写用户名组成一个新的列表。
传统循环方式:
current_users_lower = [ ] # 创建空列表
for user in current_users: # 遍历每个用户名
lower_user = user.lower() # 转换为小写
current_users_lower.append(lower_user) # 添加到新列表