给变量2个值

问题描述 投票:0回答:1
import random, time


suits = ["♥️", "♦️", "♣️", "♠"]
hearts, diamonds, clubs, spades = suits
suits_name = (hearts, diamonds, clubs, spades)
value = (10, 11)
A = value[0]
J = value[1]
Q = value[1]
K = value[1]
number = [A, 2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K]




def start():
    play = input("You wanna play? ")
    if play.lower() in ("yes", "sure", "yeah"):
        unique_cards = set()
        while len(unique_cards) < 5:
            unique_cards.add(f"{random.choice(number)}{random.choice(suits_name)}")
        cards = list(unique_cards)
        print("Your cards are:", ", ".join(cards) )
        time.sleep(4)
        while True:
            change_cards = input("Want to change cards? ")
            if change_cards.lower() == "yes":
                quantity = input("Which cards? ")
                if quantity.lower() == "none":
                    print("chepalle")
                    break
                elif quantity.lower() in cards:
                    cards.remove(quantity.lower())
                    new_cards = [f"{random.choice(number)}{random.choice(suits_name)}" for _ in range(len(quantity.split(',')))]
                    cards.extend(new_cards)
                    print("Your new cards are: ", ", ".join(cards))
                    break
                elif quantity.lower() == "all":
                    all_choice = [f"{random.choice(number)}{random.choice(suits_name)}" for _ in range(5)]
                    print("Your new cards are: ", ", ".join(all_choice))
                    break
                else:
                    print("Invalid cards selected")
            elif change_cards.lower() == "no":    
                break
        # CONTROLLARE CARTE CON IPOTETICO AVVERSARIO/AVVERSARI
        print("ngul")
        # PER CONTROLLARE LA MANO SI POTREBBE GUARDARE SE IL PROGRAMMA TROVA 2+ NUMERI UGUALI, SE TROVA TUTTE LE CARTE DELLO STESSO SEME....
    else:
        exit()
    

start()

我正在尝试做一个Python的5张牌扑克程序,但是我在换牌方面遇到了问题(可能是由于花色和花色_名称)。我的想法是打印带有花色符号的卡片,但是当终端要求输入时,通过输入花色名称来更改它们(如红心 3、梅花 7...)。有没有办法既赋予卡片花色值(红心),又赋予符号值?

python python-3.x list variables poker
1个回答
0
投票

您目前只是将您的卡片当作字符串来处理。由于每张卡都有两个单独的属性(值和花色),我建议您定义一个

Card
类。这使您可以轻松检索和更改类的值和套装,并定义如何打印类的方法。

一个可能的例子是这样的

from enum import Enum, auto

class CardSuits(Enum):
    Clubs = auto() # 1
    Spades = auto() # 2
    Hearts = auto() # 3
    Diamonds = auto() # 4

class CardValues(Enum):
    Ace = auto() # 1
    Deuce = auto() # 2
    Three = auto() # 3
    Four = auto() # 4
    Five = auto() # 5
    Six = auto() # 6
    Seven = auto() # 7
    Eight = auto() # 8
    Nine = auto() # 9
    Ten = auto() # 10
    Jack = auto() # 11
    Queen = auto() # 12
    King = auto() # 13

class Card:
    def __init__(self, suit: CardSuits, value: CardValues) -> None:
        self.suit = suit
        self.value = value

    def __repr__(self) -> str:
        return f"Card({self.suit.name}, {self.value.name}"

    def __str__(self) -> str:
        return f"{self.value.name} of {self.suit.name}"

您不需要定义前两个类,但当您经常在纸牌游戏中处理这些属性时,它确实很有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.