繁体   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