Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 理解不区分大小写的列表比较_Python_List_Case - Fatal编程技术网

Python 理解不区分大小写的列表比较

Python 理解不区分大小写的列表比较,python,list,case,Python,List,Case,我正在学习Python速成教程。我在做一个我基本上都能弄明白的练习。只有一段代码我似乎找不到 演习: 比较两个列表,一个是当前用户一个是新用户。确保它们不区分大小写 我想知道为什么当我将当前用户转换为小写时,'andy657'在第一次打印时仍被读取为可用 守则: current_users = ['nedboy78', 'codingking678', 'johnnykapahala','jam95','python65','ANDY657'] new_users = ['hamlet56',

我正在学习Python速成教程。我在做一个我基本上都能弄明白的练习。只有一段代码我似乎找不到

演习:

比较两个列表,一个是
当前用户
一个是
新用户
。确保它们不区分大小写

我想知道为什么当我将
当前用户
转换为小写时,
'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速成班练习的解决方案也可以在线提供。这段代码看起来像是本书第一版中的代码,该书的解决方案如下。第二版的解决方案如下所示。