Форум сайта python.su
Добрый день.
Изучаю python по книге, столкнулся с не совсем понятным мне заданием, которое в явном виде не рассматривалось в главе к которой относится задача.
#• Создайте другой список new_users, содержащий пять и более имен пользователей .
# Убедитесь в том, что одно или два новых имени также присутствуют в списке
# current_ users .
#• Переберите список new_users и для каждого имени в этом
# списке проверьте, было ли оно использовано ранее . Если имя уже использовалось,
# выведите сообщение о том, что пользователь должен выбрать новое имя .
# Если имя не использовалось, выведите сообщение о его доступности .
#• Проследите за тем, чтобы сравнение выполнялось без учета регистра символов .
# Если имя 'John’ уже используется, в регистрации имени ‘JOHN’ следует отказать.
Есть списки к примеру:
current_users = [“Andrew”, “JOHHNAS”, “AdMiN”, “FrenchPress”,
“Dreamer1cc”, “XIII”]
new_users = [“AnDrEw”, “Apple”, “xiii”, “frenchpress”, “NewUser”, “CurrentUser”,
“NotCurrentUser”
]
Как выполнить проверку без учета регистра, я могу элементы первого перебираемого списка взять в нижнем регистре как:
for user in new_users: if user.lower() in current_users
current_users = ["Andrew", "JOHHNAS", "AdMiN", "FrenchPress", "Dreamer1cc", "XIII"] new_users = ["AnDrEw", "Apple", "xiii", "frenchpress", "NewUser", "CurrentUser", "NotCurrentUser" ] lower_current_users = [] for cr_user in current_users: lower_current_users.append(cr_user.lower()) for user in new_users: if user.lower() in lower_current_users: print("You must change name. Name " + user + " is already exist!") else: print("Registration availeble. Pls input your e-mail.")
Отредактировано dreamer1cc (Фев. 14, 2017 16:00:35)
Офлайн
Пока удалось ещё укоротить:
current_users = ["Andrew", "JOHHNAS", "AdMiN", "FrenchPress", "Dreamer1cc", "XIII"] new_users = ["AnDrEw", "Apple", "xiii", "frenchpress", "NewUser", "CurrentUser", "NotCurrentUser"] for user in new_users: if user.lower() in [cr_user.lower() for cr_user in current_users]: print("You must change name. Name " + user + " is already exist!") else: print("Registration availeble. Pls input your e-mail.")
Офлайн
Множества
Офлайн
if user.lower() in current_users or user.upper() in current_users
Офлайн
>>> current_users = ["Andrew", ... "JOHHNAS", ... "AdMiN", ... "FrenchPress", ... "Dreamer1cc", ... "XIII"] >>> >>> new_users = ["AnDrEw", ... "Apple", ... "xiii", ... "frenchpress", ... "NewUser", ... "CurrentUser", ... "NotCurrentUser"] >>> >>> seen = set(map(str.lower, current_users)) >>> >>> for user in new_users: ... if user.lower() not in seen: ... print('new:', user) ... else: ... print('old:', user) ... old: AnDrEw new: Apple old: xiii old: frenchpress new: NewUser new: CurrentUser new: NotCurrentUser >>>
Офлайн
marvellikА как планируется уйти от AdMiN? Или FrenchPress. И не lower и не upper. К сожалению не подойдёт.
Офлайн
py.user.nextСпасибо, это интересно. Пока не дочитал вероятно Очень полезный пример
Офлайн
raue
Во-первых вы пишете ерунду, во-вторых вы пишете её в давно забытый и уже никому не интересный топик.
Не надо так делать.
Отредактировано FishHook (Июль 13, 2017 12:24:11)
Офлайн
Очень интересный топик. Я по той же книге учусь и это пример сейчас разбираю. В Книге не дали пока ответ на вопрос как понизить регистр в списке, вот мы и мучаемся. Хотя там и не просили пока составлять списки с именами в разных регистрах.
Офлайн
Rusl
В Книге не дали пока ответ на вопрос как понизить регистр в списке, вот мы и мучаемся.
>>> lst = ['ABC', 'DEF'] >>> out = list(map(str.lower, lst)) >>> out ['abc', 'def'] >>> out = [i.lower() for i in lst] >>> out ['abc', 'def'] >>>
Офлайн