Python中的多值变量

Python中的多值变量,python,python-3.x,Python,Python 3.x,有没有办法给一个变量分配多个值? 我正在编写一个纸牌游戏,并使用王牌到王牌的值来制作纸牌。有没有办法分配一个变量ACE的值和1的值等等,国王是13?这不是必需的,但会使代码更简单,更容易创建 谢谢大家,我现在有: from collections import namedtuple Card = namedtuple('Card', 'name value') ace = Card(name="ACE", value=1) 当我执行:printace时,我得到的结果是:Cardname=ACE

有没有办法给一个变量分配多个值? 我正在编写一个纸牌游戏,并使用王牌到王牌的值来制作纸牌。有没有办法分配一个变量ACE的值和1的值等等,国王是13?这不是必需的,但会使代码更简单,更容易创建

谢谢大家,我现在有:

from collections import namedtuple
Card = namedtuple('Card', 'name value')
ace = Card(name="ACE", value=1)
当我执行:printace时,我得到的结果是:Cardname=ACE,value=1,当我执行ACE.name或ACE.value时,我也得到了正确的结果

有没有办法将ace值放在一个列表中,然后只提取名称?

您可以使用一个类或包装这两部分数据

from collections import namedtuple

Card = namedtuple('Card', 'name value')
ace = Card(name="ACE", value=1)
king = Card(name="King", value=13)
自定义类可能更好,因为这样可以实现像card1 我能把stackA+1==stackB语句设为真吗

是的,如果您在接受将其他卡添加到int类型并将结果与其他卡类型进行比较的卡类型上实施_radd_uuuu和_eq_uu_u)方法,请使用字典

{'ace' :1, 'two' :2', ...etc}

您可以使用自定义类:

class Card(object):
    # fancier output
    s = {0:"hearts", 1:"diamonds", 2:"clubs", 3:"spades"}
    r = {i:v for i,v in enumerate( [ "Ace","2","3","4","5","6","7","8",
                                     "9","10","Jack","Queen","King"],1)}
    def __init__(self, suit,rank):
        self.suit = suit
        self.rank = rank

    def __str__(self):
        return "{} of {}".format(Card.r[self.rank],Card.s[self.suit])

    def __repr__(self):
        return str(self)

    def __lt__(self,other):
        return (self.suit,self.rank) < (other.suit, other.rank)


    @classmethod
    def summ_hand(cls,hand):
        return sum ( 10 if card.rank > 10 else card.rank for card in hand)


class Deck(object): 
    def __init__(self):
        self.cards = [Card(suit,rank) for suit in range(4) for rank in range(1,14)]


deck = Deck()

print( deck.cards )
提供_lq__self允许您排序:

hand = random.choices(deck.cards, k=7)
print(hand)
print(sorted(hand))

print( Card.summ_hand([Card(0,9),Card(0,11),Card(0,13)]))
输出:

[Ace of hearts, 2 of hearts, 3 of hearts, 4 of hearts, 5 of hearts, 6 of hearts, 
 7 of hearts, 8 of hearts, 9 of hearts, 10 of hearts, Jack of hearts, Queen of hearts, 
 King of hearts, 
 Ace of diamonds, 2 of diamonds, 3 of diamonds,4 of diamonds,5 of diamonds, 6 of diamonds, 
 7 of diamonds, 8 of diamonds, 9 of diamonds, 10 of diamonds, Jack of diamonds, 
 Queen of diamonds, King of diamonds, 
 Ace of clubs, 2 of clubs, 3 of clubs, 4 of clubs, 5 of clubs, 6 of clubs, 7 of clubs, 
 8 of clubs, 9 of clubs, 10 of clubs, Jack of clubs, Queen of clubs, King of clubs, 
 Ace of spades, 2 of spades, 3 of spades, 4 of spades, 5 of spades, 6 of spades, 
 7 of spades, 8 of spades, 9 of spades, 10 of spades, Jack of spades, Queen of spades, 
 King of spades]
# as given by choices
[Ace of hearts, Ace of spades, Queen of diamonds, 9 of spades, 
 King of hearts, Ace of spades, 3 of diamonds]

 # sorted
[Ace of hearts, King of hearts, 3 of diamonds, Queen of diamonds,
 Ace of spades, Ace of spades, 9 of spades]

29  # summ_hand for 9,Queen,King, 

我相信您正在寻找字典数据类型:cricket_007如果我这样做了,我是否能够分别使用值ACE和值1?是的。ace.name或ace[0],如文档链接中所述,将生成ace我如何从namedtuple中回忆起价值理念?同样,不同的字段/索引。如果我有一个列表:listA=[ace,fake,fake]。。。当我执行printlistA[0]时,我得到Cardname=ACE,value=1。。。有没有办法只记住名称或值?