Python 理解不区分大小写的列表比较
我正在学习Python速成教程。我在做一个我基本上都能弄明白的练习。只有一段代码我似乎找不到 演习: 比较两个列表,一个是Python 理解不区分大小写的列表比较,python,list,case,Python,List,Case,我正在学习Python速成教程。我在做一个我基本上都能弄明白的练习。只有一段代码我似乎找不到 演习: 比较两个列表,一个是当前用户一个是新用户。确保它们不区分大小写 我想知道为什么当我将当前用户转换为小写时,'andy657'在第一次打印时仍被读取为可用 守则: current_users = ['nedboy78', 'codingking678', 'johnnykapahala','jam95','python65','ANDY657'] new_users = ['hamlet56',
当前用户
一个是新用户
。确保它们不区分大小写
我想知道为什么当我将当前用户
转换为小写时,'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
这是因为您的
else
条件在最后一个if
条件之前执行。所以这里我要改变顺序
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(f'sorry username {new_user} not available pick a new username')
elif new_user in current_users_convert:
print(f"CANT USE {new_user} AS A USERNAME")
else:
print(f'username {new_user} is available')
输出:
username hamlet56 is available
sorry username python65 not available pick a new username
sorry username jam95 not available pick a new username
username todds4 is available
CANT USE andy657 AS A USERNAME
print(“用户名”+新用户+”可用”)
没有正确缩进到else
条款中为什么不可以?您在任何情况下都没有那个print语句,所以它将始终执行。这段代码不会按照编写的方式编译。即使缩进是固定的,两个if
语句也没有逻辑连接,也没有不相交。您可能希望两个列表都小写,然后使用一个if
-else
。如果您想比较此列表,可以执行list(set(current\u users\u convert)和set(new\u users))
,以获取可用的用户名。此外,如果您还没有看到,Python速成班练习的解决方案也可以在线提供。这段代码看起来像是本书第一版中的代码,该书的解决方案如下。第二版的解决方案如下所示。