簡體   English   中英

在Python 2.7中,如何在列表中打印帶有索引號的值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM