Как сделать сравнение без учета регистра символов в Python?
Нужно сравнить 2 строки, при этом не учитывая в каком регистре они написаны. Строки 'Hello' 'hello' 'HeLlO' 'hELLo' должны сравниваться как одинаковые и выводить, что имя занято
current_users = ['Yaroslav', 'Misha', 'Grisha', 'Masha', 'Lilya']
new_users = ['Anna', 'Misha', 'Alex', 'Masha', 'Lilya']
for user in new_users:
if user in current_users:
print('Имя занято')
else:
print('Имя свободно')
aRegius, так дело в том, что это они пока, что так написаны, (в тренировочной программе), а в реале они могу быть написаны в разных регистрах и их не 5 шт. будет а тысячи имён в списках. Если я вас правильно понял.
>>> x = ['YaroslaV', 'MiSHa']
>>> x = [i.lower() for i in x]
>>> x
['yaroslav', 'misha']
>>> y = ['YARoslaV', 'MishA']
>>> for i in y:
if i.lower() in x:
print('_') # ну и т.д.
Программа работает, но я не до конца понимаю логику)
current_users = ['YarosLav', 'MiSha', 'GrishA', 'MAsha', 'LilyA']
current_users = [user.lower() for user in current_users]
new_users = ['Anna', 'Misha', 'Alex', 'Masha', 'Lilya']
for user in new_users:
if user.lower() in current_users:
print('Имя занято')
else:
print('Имя свободно')
Почему, когда идёт сравнение new_users Misha и misha, программа выдаёт, что имя занято, хотя там идёт имя с заглавной буквы, а там всё с нижнего регистра.
BaJar, Потому что вы сравниваете не Misha и misha, а misha и misha: if user.lower()
вы берете имя Misha из new_users и приводите (для корректного сравнения) его к нижнему регистру...
aRegius, Eureka!!! Дошло. user.lower() превращает Misha из new_users в misha и потом сравнивает с current_users, которые мы привели тоже в нижний регистр current_users = [user.lower() for user in current_users]
for new_user in new_users:
if new_user.lower() in current_user_lower:
print(f"{new_user}, выберите новое имя!")
else:
print(f"Пользователь {new_user} создан")