Питон не видит символы мастей карт

answer = "6♥️A♥️J♥️ 8♦️J♣️9♠️"
for i in answer:
    if i == "♥️":
        print("черви")
    else:
       continue

Ответы (2 шт):

Автор решения: CrazyElf

Этот символ на самом деле состоит из двух символов, а строка итерируется по одному символу, из-за этого сравнение не срабатывает. Но можно проверить, например так, взяв только первый символ от изображения сердечка:

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']

Невидимый элемент кода, который указывает, что предыдущий символ должен отображаться в виде Эмоджи

→ Ссылка
Автор решения: insolor

Потому что из строки вы получаете по одному символу, а при сравнении там где у вас сердечко в условии на самом деле два символа:

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("черви")

Вывод:

черви
черви
черви
→ Ссылка