Питон не видит символы мастей карт
answer = "6♥️A♥️J♥️ 8♦️J♣️9♠️"
for i in answer:
if i == "♥️":
print("черви")
else:
continue
Ответы (2 шт):
Этот символ на самом деле состоит из двух символов, а строка итерируется по одному символу, из-за этого сравнение не срабатывает. Но можно проверить, например так, взяв только первый символ от изображения сердечка:
answer = "6♥️A♥️J♥️ 8♦️J♣️9♠️"
for i in answer:
if i == "♥️"[0]:
print("черви")
else:
continue
Результат:
черви
черви
черви
Проверка, что там внутри, какие символы:
print(list(map(hex,map(ord,"♥️"))))
print(list(map(hex,map(ord, "6♥️A♥️J♥️ 8♦️J♣️9♠️"))))
Результат:
['0x2665', '0xfe0f']
['0x36', '0x2665', '0xfe0f', '0x41', '0x2665', '0xfe0f', '0x4a', '0x2665', '0xfe0f', '0x20', '0x38', '0x2666', '0xfe0f', '0x4a', '0x2663', '0xfe0f', '0x39', '0x2660', '0xfe0f']
Невидимый элемент кода, который указывает, что предыдущий символ должен отображаться в виде Эмоджи
Потому что из строки вы получаете по одному символу, а при сравнении там где у вас сердечко в условии на самом деле два символа:
answer = "♥️" # скопировано из вашего условия
for i in answer:
print(repr(i), hex(ord(i)))
Выведет:
'♥' 0x2665
'️' 0xfe0f
Невидимый символ с кодом 0xfe0f - селектор начертания.
Чтобы не ошибиться, и не скопировать случайно в условие лишние символы, можно сравнивать напрямую с символом с кодом 0x2665:
answer = "6♥️A♥️J♥️ 8♦️J♣️9♠️"
for i in answer:
if i == "\u2665": # Или так: ord(i) == 0x2665
print("черви")
Вывод:
черви
черви
черви