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...)。有没有办法既赋予卡片花色值(红心),又赋予符号值?
您目前只是将您的卡片当作字符串来处理。由于每张卡都有两个单独的属性(值和花色),我建议您定义一个
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}"
您不需要定义前两个类,但当您经常在纸牌游戏中处理这些属性时,它确实很有帮助。