Python проверка имён пользователей

Рейтинг: 1Ответов: 2Опубликовано: 26.03.2023

Должно быть так: если имя в списке new_users уже использовалось раньше (есть в списке current_users), то тогда можно выводить сообщение, что нельзя это имя использовать.
В другом случае если не было ранее имя использовано, то тогда должно выводиться, что имя доступно.

current_users = ['Vlad', 'Michael', 'Andry', 'Alex', 'Admin']
new_users = ['Stas', 'Anna', 'Andry', 'Alex', 'Max']
for current_user in current_users:
    for new_user in new_users:
        if current_user.lower() == new_user.lower():
            print(f'имя {new_user} использовалось, выберите другое имя')
else:
    print(f'имя {current_user} доступно для регистрации ')

Ответы

▲ 2Принят

Можно попробовать использовать конструкцию if in

old = ['a', 'b', 'c']
new = ['new', 'a', 'b']


for name in new:
   if name in old:
        print(f'имя {name} использовалось, выберите другое имя')
   else:
        print(f'имя {name} доступно для регистрации ')


# имя new доступно для регистрации 
# имя a использовалось, выберите другое имя
# имя b использовалось, выберите другое имя

Что за in?

in, в зависимости от того, чем является объект после него, проверяет следующее:

  • Если это строка - происходит проверка на "содержание подстроки" или "вхождение"

    print("He" in "Hello") # True

  • Если это структура по типу список/кортеж и т.д. - происходит проверка на содержание этого элемента

    print(1 in [1, 3, 5]) # True
    print(2 in [1, 3, 5]) # False

P.S. В словарях проверяется содержание по ключам

print('bar' in {'bar': 13, 'foo': 7}) # True
print('car' in {'bar': 13, 'foo': 7}) # True
▲ 0

Используйте множества, здесь циклы не нужны:

current_users = {'Vlad', 'Michael', 'Andry', 'Alex', 'Admin'}
new_users = {'Stas', 'Anna', 'Andry', 'Alex', 'Max'}

print(f'Имена {new_users.intersection(current_users)} использовались, выберите другое имя')
print(f'Имена {new_users.difference(current_users)} доступны для регистрации ')
Имена {'Andry', 'Alex'} использовались, выберите другое имя
Имена {'Stas', 'Anna', 'Max'} доступны для регистрации 

Примечание. Это регистрозависимый вариант. Если нужен регистронезависимое сравнение, можно предварительно перевести все значения в множествах, например, в нижний регистр.