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

2024-09-26 22:54:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在努力让这个项目运作起来,但我失败得很惨。我试图创建一个纸牌游戏,随机我的变量(他们是定义)和数字。所以基本上,你随机抽两张牌,这两张牌的范围是1-10,然后变量是:杰克=11,王牌=20,国王=13,王后=12。然后卡片被显示和加起来。但是,我不想显示jack、queen、king和ace的数字11、12、13和20—我想显示jack、queen、king和ace的名称。这是我到目前为止写的东西,所有的东西都在工作,但我想弄清楚我该如何把它随机化。你知道吗

另外,我想让“playercard1_rank=random.randrange(1,14)”选择一个从1到13的数字范围,然后选择20而不是14到19。你知道吗

我没给杰克、皇后、国王和王牌下定义。我想弄清楚我将如何在我的程序中实现这一点。谢谢。你知道吗


Tags: 项目名称游戏定义数字acejackrank
3条回答

如果您想要卡片的特定打印输出,我建议您将它们放入字典中,由它们的数值键入,并使用要显示为其值的字符串:

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]

使用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)从字典键获取一个随机值。所以它可能是杰克、皇后、国王或王牌。它还输出一个列表。你知道吗

似乎很适合做物体。你知道吗

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)

相关问题 更多 >

    热门问题