AttributeError: 'list' object has no attribute 'lower'
current_users = ['machina', 'bezbazarov', 'kocherginr', 'komap', 'qwerty', 'BezbazarovAA']
new_users = ['Bezbazarov', 'arnold', 'kingkong', 'komap', 'byxapecT']
for new_user in new_users:
if new_user.lower() in current_users.lower():
print (f'Извини, имя {new_user.title()}, занято. Выбери другое!')
else:
print (f'Имя {new_user}, свободно. Добро пожаловать!')
Необходимо, чтобы имена проверялись в обох списках по нижнему регистру. Если убираю .lower в current_users, то все работает, но проверка идет не верно...так как lower задействуется только для списка new_users
Ответы (1 шт):
Автор решения: Amgarak
→ Ссылка
Метод .lower()
доступен только для строк, а вы пытаетесь применить его к списку.
Как вариант, можно собрать множество с элементами в нижнем регистре и уже сравнивать с ним.
current_users = ['machina', 'bezbazarov', 'kocherginr', 'komap', 'qwerty', 'BezbazarovAA']
new_users = ['Bezbazarov', 'arnold', 'kingkong', 'komap', 'byxapecT']
# Собираем множество с именами в нижнем регистре
current_users_lower_set = {user.lower() for user in current_users}
for new_user in new_users:
if new_user.lower() in current_users_lower_set:
print (f'Извини, имя {new_user.title()}, занято. Выбери другое!')
else:
print (f'Имя {new_user}, свободно. Добро пожаловать!')
Вывод:
Извини, имя Bezbazarov, занято. Выбери другое!
Имя arnold, свободно. Добро пожаловать!
Имя kingkong, свободно. Добро пожаловать!
Извини, имя Komap, занято. Выбери другое!
Имя byxapecT, свободно. Добро пожаловать!