2013-05-12 65 views
-5

我想让这个程序工作,并且我失败了。我正在尝试创建一个随机化我的变量(他们被定义)和数字的纸牌游戏。所以基本上,你可以抽两张随机牌,这两张牌的范围是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的数字范围,然后选择20-14.14的数字。

P.P.S我没有定义杰克,王后,国王和王牌。我想弄清楚我将如何将其实施到我的程序中。谢谢。

+7

“这是我写的,到目前为止” - 除非你已经给了我们什么。 – jwodder 2013-05-12 05:19:06

+0

为什么你需要王牌20? Ace是1? – Patashu 2013-05-12 05:22:06

+0

寻找“蟒蛇洗牌甲板” - 这个问题不时出现。 – user2246674 2013-05-12 05:44:34

回答

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

+0

抱歉,我忘记删除“这是我迄今为止所写的内容”,我无法发布我的材料。感谢你们的帮助。这是我第一次使用这个网站。 – user2374254 2013-05-12 07:38:45

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) 
+0

你能解释一下发生了什么吗?我是编程新手,我真的想要吸收每个人都必须说的话。 – user2374254 2013-05-12 08:20:24

+0

1)创建一个'Card'类型的对象。 2)创建两个列表来包含有关卡的价值和特定花色的信息。 3)使用Python的内置'zip'和'xrange'函数来创建卡组。如果你迷失在这个方法的功能上,试试'(name,zip in(value,xrange(1,len(value)+1)))'* * * * * * *这是最复杂的部分。其余的是你普通的列表理解。 – Makoto 2013-05-12 08:34:36