Задать вопрос
@Mist8

Как определить входят ли две переменные одновременно в один из 4ех списков или входят в разные?

Есть четыре списка, по мастям карт:

clubs = ['10_of_clubs.png', '2_of_clubs.png', '3_of_clubs.png']
diamonds = ['10_of_diamonds.png', '2_of_diamonds.png', '3_of_diamonds.png']
hearts = ['10_of_hearts.png', '2_of_hearts.png', '3_of_hearts.png']
spades = ['10_of_spades.png', '2_of_spades.png', '3_of_spades.png']


И есть две карты любые карты из этих списков. Например:
1st_card = '10_of_clubs.png'
2nd_card2 =  '2_of_diamonds.png'


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

Задачу я решил, но весьма грубо. Хотелось бы понять, как ещё решить более оптимально.

Мое решение содержит кучу if (отдельно проверяется каждая карта на вхождение в каждый список), что очевидно жуткие костыли...
Upd: проверка показала, что даже так не получилось решить задачу.

В общем хотелось бы увидеть элегантное решение.

P.S. это нужно для функции, которая будет циклически проверять совпадение мастей карт.
Они будут случайно выбираться из общего списка, а результат определения одной они масти или нет будет влиять на счетчики правильных и неправильных ответов.
  • Вопрос задан
  • 2296 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
@throughtheether
human after all
Почему списки diamonds, hearts и spades содержат одинаковые строки? Я не понимаю, в чем проблема перебрать четыре списка и проверить вхождение карт в каждый из них. Пример:
_flag=False
for _list in (clubs,diamonds,hearts,spades):
    if first_card in _list and second_card in _list:
        _flag=True
        break

P.S. это нужно для функции, которая будет циклически проверять совпадение мастей карт.
Что значит 'циклически'? Сколько ожидается циклов? Почему нельзя реализовать карты в качестве экземпляров специализированного класса или named tuple и напрямую сравнивать атрибуты?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы