[英]How do you print values in lists with their index number in Python 2.7?
我正在嘗試用python制作二十一點游戲。 我遇到了問題,因為我試圖在游戲中使用隨機模塊。 我使用了隨機模塊來獲取一個與列表中的索引號協調的數字。 我所做的列表由卡片面值組成。 我不知道如何使用隨機索引號打印這些值。 這是我的代碼:
# this is a blackjack game made in python
import random
import time
# make a list full of the card values
cards = (["A", "K", "Q", "J", 2, 3, 4, 5, 6, 7, 8, 9, 10])
indexNum1 = random.randint(0,12)
indexNum2 = random.randint(0,12)
indexNum3 = random.randint(0,12)
indexNum4 = random.randint(0,12)
indexNum5 = random.randint(0,12)
for card in cards:
print card(indexNum1)
print card(indexNum2)
print card(indexNum3)
print card(indexNum4)
print card(indexNum5)
我希望有人可以幫助我解決這個問題。 謝謝!
您可以直接索引cards
,例如:
print(cards[indexNum1])
但是,如果要循環,則應遍歷索引:
for cardidx in (indexNum1, indexNum2, indexNum3, indexNum4, indexNum5):
print(cards[cardidx])
但是,這會使您的工作變得更加困難,因為當前您的代碼可能返回5
Ace-我認為您不希望這樣做:
cards = ["A", "K", "Q", "J", 2, 3, 4, 5, 6, 7, 8, 9, 10]
hand = random.sample(cards, k=5)
for card in hand:
print(card)
如果要正確模擬一副紙牌,則必須執行以下操作:
import random
def clean_deck():
return list("AJQK234567890") * 4
def draw_cards(deck, n):
return [deck.pop() for _ in range(n)]
deck = clean_deck()
random.shuffle(deck)
for card in draw_cards(deck, 5):
print(card)
這會跟蹤紙牌組,從字面上將其shuffles
,這很方便是一種random
函數,然后從紙牌中“抽取”( pops
)。 您必須跟蹤牌組,以便例如繪制4個A,但是這樣就再也沒有剩下了。 這種方法在紙牌游戲中也是持久的-當您從卡組中提取紙牌時,它們實際上已被移除,因此在整個游戲中您也不能畫出超過4個A。 如果您嘗試從空的甲板上繪制,則會崩潰,盡管您可以根據需要在draw_cards
放置if
語句以重新填充甲板,但是您應該意識到,如果甲板用完了會發生這種情況-這可能會導致奇怪的事情就像一場游戲中的5個A。
我已將所有數字更改為字符串,因為如果某些卡不是整數,則將它們用作整數是沒有用的。 (另一種方法是將它們全部保留為整數,您可以使用range
函數-猜測為range(13)
,或者如果要從2到range(2, 15)
)。 我也將10
更改為0
因為0
未被使用,這使其更加簡潔。 如果您願意,可以輕松地改回來。
此方法與其他方法的區別在於,其他方法從不刪除卡( pop
)。 他們只是隨機挑選卡片,然后放回去,盡管它們已被抽出。
如果您想隨機選擇k張卡片而不重復並保留索引,這可能會有所幫助:
import random
cards = (["A", "K", "Q", "J", 2, 3, 4, 5, 6, 7, 8, 9, 10])
indices = random.sample(range(len(cards)), k=5)
print 'Indices are:', indices, '\nCards chosen are:',[cards[index] for index in indices]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.