Проверка наличия двух пар в карточной руке Python - PullRequest
0 голосов
/ 25 сентября 2019

Я пытаюсь проверить, есть ли в руке две пары случайных.У меня есть это прямо сейчас, где он напечатает одну пару, так что он печатает количество экземпляров этой карты, поэтому, если есть 2 двойки, это будет 2 x 2, поэтому первое число является вхождением, а второе число является номером картыи затем напечатать одну пару.

Как мне сделать так, чтобы вместо этого она напечатала две пары, поэтому проверяю в руке 5, если, скажем, есть 2 x 2 и 2 x 5, так что параиз 2 и 5, чтобы затем распечатать "two pairs".

Я добавил в numbers = cards.count(card) и для оператора if под ним, то numbers == 2 Так что, если есть одна пара и одна пара, он печатает две пары ивероятность его получения.

def twopair():
    count = 0
    while True:
        cards = []
        for i in range(5):
            cards.append(random.choice([1,2,3,4,5,6,7,8,9,10,11,12,13]))
        stop = False
        for card in cards:
            number = cards.count(card) # Returns how many of this card is in your hand
            numbers = cards.count(card)
            print(f"{number} x {card}")
            if(number == 2 and numbers == 2):
                print("One Pair")
                stop = True
                break
        if stop:
            break
        else:
            count += 1
    print(f'Count is {count}')

1 Ответ

1 голос
/ 25 сентября 2019

Посмотрите на Counter из модуля collections.https://docs.python.org/3/library/collections.html#collections.Counter

import random
from collections import Counter


def twopair():
    while True:
        cards = []
        for i in range(5):
            cards.append(random.choice([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]))

        counted_cards = Counter(cards)
        two_most_common, count = zip(*counted_cards.most_common(2))

        count_to_message = {
            (1, 1): "Nothing",
            (2, 1): "One Pair",
            (3, 1): "Three of a Kind",
            (4, 1): "Four of a Kind",
            (5, 1): "Whoops, who's cheating",
            (2, 2): "Two Pairs",
            (3, 2): "Full House",
        }

        msg = count_to_message[count]
        print(msg)
        if msg == "Two Pairs":
            break


twopair()
...