2017-03-31 49 views
0

我是新來的python,我想弄清楚如何讓用戶輸入,然後使用該輸入從一副紙牌中選擇特定的卡片。這是我到目前爲止Python-卡片選擇

cardfaces = [] 
suits = ["Hearts", "Diamonds", "Clubs", "Spades"] 
royals = ["J", "Q", "K", "A"] 
deck = [] 


for i in range(2,11): 
    cardfaces.append(str(i)) 


for j in range(4): 
    cardfaces.append(royals[j]) 



for k in range(4): 
    for l in range(13): 
     card = (cardfaces[l] + " of " + suits[k]) 
     deck.append(card) 


for m in range(52): 
    print(deck[m]) 
pick=input('Pick a card 1-52 :') 
+3

你的問題是不是很不夠具體。到目前爲止你的代碼有什麼問題?你有錯誤嗎?有沒有一些功能,你不能找到語法? –

回答

1

它看起來好像你所需要做的就是訪問選定的卡。

chosen_card = deck[int(pick)-1] 

您需要對此採取更多措施嗎?我通常會認爲你希望這個套牌是(套裝,排名)對的列表,而不是字符串描述。您可以使用當前的代碼選擇卡片說明,但卡座沒有簡單的方法將這些描述恢復爲您可以操縱的特徵。

+1

如果有人輸入52,這不會拋出IndexOutOfBounds嗎? –

+0

好點。固定。 – Prune

+0

現在你會得到一個'TypeError':P –

1

我假設你的問題是,你不知道如何訪問選定的卡,一旦玩家選擇一個數字。

如果是這樣,您已經接近解決方案了!

當玩家輸入一個數字時,您已將其作爲字符串存儲在pick變量中。接下來的步驟是:

  1. 轉換該字符串爲整數,並
  2. 發現在甲板位置的卡。

Python有一個built-in int function,將pick從一個字符串轉換爲一個整數。

您的deck變量是一個列表,並且要從Python列表中獲取項目,您可以按索引請求該項目。該指數是代表該項目的位置的數字:

animals = ["cat", "dog", "fish", "pterodactyl] 
print(animals[0]) # "cat" 
print(animals[1]) # "dog" 
print(animals[2]) # "fish" 

添加給你的代碼應該做的伎倆:

pick = int(pick) 
card = deck[pick] 
print("Your card is", card) 
1

你幾乎沒有!所有你需要做的是從deck中取出卡片。

pick = input('Pick a card 1-52 :') 

card = deck[int(pick)-1] 

print("You chose: The {}".format(card)) 

(噓!請記住,名單開始在指數0,這就是爲什麼你從它必須-1