2013-05-12 40 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