Сравнение списков и приведение к нижнему регистру (Python)
дано два списка пользователей, нужно их сравнить в нижнем регистре и если имя занято вывести что невозможна регистрация. На выдаче дает имя в нижнем регистре, как сделать чтобы был сохранен изначальный регистр new_users
users = ['John', 'mIke', 'Mary', 'lian', 'kira']
n_users = []
for n_user in users:
n_users.append(n_user.lower())
new_users = ['jJy', 'henry', 'jey', 'Kira', 'Mary']
n_new_users = []
for n_new_user in new_users:
n_new_users.append(n_new_user.lower())
for nnr in n_new_users:
if nnr in n_users:
print(nnr + ' you can not join us, incorrect name')
else:
print(nnr + ' the name is available')
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
Ну как-то так:
users = ['John', 'mIke', 'Mary', 'lian', 'kira']
users_lower_set = set(map(str.lower, users))
new_users = ['jJy', 'henry', 'jey', 'Kira', 'Mary']
for new_user in new_users:
if new_user.lower() in users_lower_set:
print(new_user + ' you can not join, us incorrect name')
else:
print(new_user + ' the name is available')
На выходе:
jJy the name is available
henry the name is available
jey the name is available
Kira you can not join, us incorrect name
Mary you can not join, us incorrect name
Пояснения.
- Старайтесь давать "говорящие имена" переменным.
n_new_user- что здесь значитn_? Непонятно. Вотusers_lowerиnew_users_lowerбыло бы понятнее. - Проверять на вхождение лучше поместив список в котором ищем в
set, так гораздо быстрее (если список большой) - сложность порядкаO(1). - Функцию
lowerспокойно можно использовать прямо вif, чтобы не "портить" значение самой переменной.