Python中的多值变量
有没有办法给一个变量分配多个值? 我正在编写一个纸牌游戏,并使用王牌到王牌的值来制作纸牌。有没有办法分配一个变量ACE的值和1的值等等,国王是13?这不是必需的,但会使代码更简单,更容易创建 谢谢大家,我现在有: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
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{'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。。。有没有办法只记住名称或值?