我已经设置了所有 52 张卡,并且我尝试使用以下命令打印所有 52 张卡 for loop。我不知道如何设置我的 for loop 在此刻。

def define_cards(n):
    rank_string = ("ace","two","three","four","five","six","seven","eight","nine","ten","jack","queen","king")
    suit_string = ("clubs","diamonds","hearts","spades")
    cards = []
    for suit in range(4):
        for rank in range(13):
            card_string = rank_string[rank] + " of " + suit_string[suit]
            cards.append(card_string)

print "The cards are:"
for i in range(52):              #how to make this for loop work??
    print i, card_string[i]

我想像这样打印

The crads are:
0 ace of clubs
1 two of clubs
2 three of clubs
...
49 jack of spades
50 queen of spades
51 king of spades
有帮助吗?

解决方案

你的职能 define_cards 必须返回列表。添加 return cards 在其结束时。

然后你必须实际调用/执行这个函数。

然后您可以访问此列表中的各个卡:

cards = define_cards()
for i, card in enumerate(cards):
    print i, card

但是,如果您正在寻找“更Pythonic”的解决方案,请尝试以下操作:

import itertools as it

rank_string = ("ace","two","three","four","five","six","seven","eight","nine","ten","jack","queen","king")
suit_string = ("clubs","diamonds","hearts","spades")

print 'The cards are:'
for i, card in enumerate(it.product(rank_string, suit_string)):
    print i, '{0[1]} of {0[0]}'.format(card)

其他提示

看看这个

    cards.append(card_string)

print "The cards are:"
for i in range(52):              #how to make this for loop work??
    print i, card_string[i]
.

为什么打印生成card_string[i]

生成aceDicetagcode有什么问题?

通用标签

答案很优雅: 通用标签

结果: 通用标签

def define_cards():
    rank_string = ("ace","two","three","four","five","six","seven","eight","nine","ten","jack","queen","king")
    suit_string = ("clubs","diamonds","hearts","spades")
    cards = []
    n = 0
    for suit in suit_string:
        for rank in rank_string:
            print '%s %s of %s' % (n,rank,suit)
            n+=1

define_cards()
.

为什么不使用迭代器: 通用标签

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top