了解我的不区分大小写的列表比较

Understanding my case insensitive list comparison

我正在学习 Python 速成课程书。我正在做我主要设法弄清楚的练习之一。我似乎无法获得一小段代码。

练习:

Compare two lists, one of current_users one of new_users. Make sure they are case insensitive.

我想知道为什么当我将 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

那是因为你的 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