我正试图让这个程序运转起来,而我却惨遭失败。我正在尝试创建一个随机化我的变量(它们被定义)和数字的纸牌游戏。所以基本上,你画两张随机牌,这两张牌的范围是1-10,然后是变量:jack = 11,ace = 20,king = 13,queen = 12。然后显示并添加卡片。但是,我不想为jack,queen,king和ace显示数字11,12,13和20 - 我想显示名字jack,queen,king,ace。这是我到目前为止所写的内容,一切正常,但我正在试图弄清楚如何将其随机化。
P.S我试图让“playercard1_rank=random.randrange(1,14)
”从1-13中选择一个数字范围,然后在没有14-19的情况下选择20。
P.P.S我没有定义杰克,女王,王和王牌。我试图找出如何将其实现到我的程序中。感谢。
答案 0 :(得分:1)
如果你想要卡片的特定打印输出,我建议你把它们放在一个字典中,用它们的数值键入,用你想要显示的字符串作为它们的值:
cards = {2: '2',
# etc ...
13: 'king',
20: 'ace'}
然后使用random.choice
来获取元素很简单:
card = random.choice(cards.items())
或者简单地将固定的牌组成一对序列,并直接在该序列上使用random.choice
:
cards = ((2, '2'), (12, 'queen'), (20, 'ace'))
card = random.choice(cards)
在任何一种情况下,都会通过返回对象的下标访问来获取要打印的字符串:
print card[1]
答案 1 :(得分:1)
看起来像是适合物品的东西。
class Card(object):
def __init__(self, rank, suit, name):
self.rank = rank
self.suit = suit
self.name = name
def __str__(self):
return "{} of {}".format(self.name, self.suit)
一旦拥有它,你可以实例化它......
king = Card(12, "Hearts", "King")
...并检索您想要的值。
print king.name, king.suit ("King", "Hearts")
更好的是,使用__str__
,因为我们已经给它打印漂亮了:
print king
接下来,随机方面。首先,我们需要生成套牌。
value = [2, 3, 4, 5, 6, 7, 8, 9, 10, "Jack", "Queen", "King", "Ace"]
suit = ["Diamonds", "Hearts", "Clubs", "Spades"]
deck = [Card(rank, s, name) for name, rank in zip(value, xrange(1, len(value)+1)) for s in suit]
现在,我们可以随机选择random.choice
:
from random import choice
cur_card = choice(deck)
答案 2 :(得分:0)
使用dictionary为项目提供值:
>>> import random
>>> cards = [{'one':1, 'two':2, 'three':3, ... },
{'jack':11,'queen':12,'king':13,'ace':20}]
>>> mycards = random.sample(cards[0].values(),1)+random.sample(cards[1],1)
我们这里有两个词典的列表。第一本字典包含1-10张卡片,第二本字典包含千斤顶,女王,王牌和王牌。
random.sample(cards[0].values(),1)
从第一个字典的值中获取一个随机数。值为[1,2,3,...,10]
。它输出一个列表,例如[1]
random.sample(cards[1],1)
从字典键中获取一个随机值。所以它可能是杰克,女王,国王或王牌。它还输出一个列表。