дополнить код в скрипте poker.py
применить знания о итераторах\генераторах, получить (освежить) навык обращения с itertools . Умение умеренно использовать итераторы в правильных местах позволяет повысить читаемость и идиоматичность кода, а также облегчит чтение чужого кода.
задание опционально, минимальным критерием успеха является прохождение тестов функции test_best_hand . Дальнейшая успешность определяется code review, если здание отправлено на проверку.
Реализуйте функцию best_hand, которая принимает на вход покерную "руку" (hand) из 7ми карт и возвращает лучшую (относительно значения, возвращаемого hand_rank) "руку" из 5ти карт. У каждой карты есть масть(suit) и ранг(rank)
Масти: трефы(clubs, C), пики(spades, S), червы(hearts, H), бубны(diamonds, D)
Ранги: 2, 3, 4, 5, 6, 7, 8, 9, 10 (ten, T), валет (jack, J), дама (queen, Q), король (king, K), туз (ace, A)
Например: AS - туз пик (ace of spades), TH - дестяка черв (ten of hearts), 3C - тройка треф (three of clubs)
Задание со *
Реализуйте функцию best_wild_hand, которая принимает на вход покерную "руку" (hand) из 7ми карт и возвращает лучшую (относительно значения, возвращаемого hand_rank) "руку" из 5ти карт. Кроме прочего в данном варианте "рука" может включать джокера. Джокеры могут заменить карту любой масти и ранга того же цвета, в колоде два джокерва. Черный джокер '?B' может быть использован в качестве треф или пик любого ранга, красный джокер '?R' - в качестве черв и бубен любого ранга.
Одна функция уже реализована, сигнатуры и описания других даны. Вам наверняка пригодится itertools. Можно свободно определять свои функции и т.п.
Python >=3.6
Module tests.py contains unit tests. You can run it by typing:
$ python utest_poker.py