【发布时间】:2021-01-23 01:26:48
【问题描述】:
我正在阅读 Python 速成课程这本书。我正在做我主要设法弄清楚的练习之一。只有一点代码我似乎无法获得。
练习:
比较两个列表,
current_users之一,new_users之一。确保它们不区分大小写。
我想知道为什么当我将current_users 转换为小写时,'andy657' 在第一次打印时仍然被读取为可用?
代码:
current_users = ['nedboy78', 'codingking678', 'johnnykapahala','jam95','python65','ANDY657']
new_users = ['hamlet56', 'python65', 'jam95','todds4','andy657']
current_users_convert = [current_user.lower() for current_user in current_users]
for new_user in new_users:
if new_user in current_users:
print("sorry username " + new_user + ' not available pick a new username')
else:
print("username " + new_user + ' is available')
if new_user in current_users_convert:
print("CANT USE " + new_user + " AS A USERNAME")
输出:
username hamlet56 is available
sorry username python65 not available pick a new username
CANT USE python65 AS A USERNAME
sorry username jam95 not available pick a new username
CANT USE jam95 AS A USERNAME
username todds4 is available
username andy657 is available
CANT USE andy657 AS A USERNAME
【问题讨论】:
-
print("username " + new_user + ' is available')没有正确缩进到else子句中 -
为什么不呢?你在任何情况下都没有那个 print 语句,所以它总是会执行。
-
这段代码不会像写的那样编译。即使缩进是固定的,这两个
if语句在逻辑上也不是连接的,也不是不相交的。您可能希望将两个列表都小写,然后使用单个if-else。 -
如果你想比较这个列表,你可以
list(set(current_users_convert ) & set(new_users )),获取可用的用户名。