我需要帮助创建一个随机化数字和变量的程序

时间:2013-05-12 05:13:07

标签: python variables random

我正试图让这个程序运转起来,而我却惨遭失败。我正在尝试创建一个随机化我的变量(它们被定义)和数字的纸牌游戏。所以基本上,你画两张随机牌,这两张牌的范围是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我没有定义杰克,女王,王和王牌。我试图找出如何将其实现到我的程序中。感谢。

3 个答案:

答案 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)从字典键中获取一个随机值。所以它可能是杰克,女王,国王或王牌。它还输出一个列表。