Python中的For循环?

2024-09-27 02:26:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用以下代码列出一副牌中的每一张牌(以及分配给该牌的编号):

suitName = ("hearts", "diamonds", "spades", "clubs")
rankName = ("Ace", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King")

def translate():
    rank = ""
    suit = ""
    cards = ""
    cardNum = 0

    for x in rankName:
        rank = x

    for y in suitName:
        suit = y

    for i in range(0, NUMCARDS):
        cards += rank
        cards += " of "
        cards += suit
        cardNum = i
        i += 1

        print cardNum
        print "    "
        print cards

不过,我的作品只得到了52次“俱乐部之王”。我需要做什么?你知道吗


Tags: 代码infor编号cardsprintsuitrank
2条回答

循环应该是嵌套的,但现在它们只是按顺序执行。现在,rank遍历所有的rankName并设置为最后一个,suit遍历所有的suitName并设置为最后一个,然后它们被打印52次。你知道吗

你甚至不应该真的有最后的循环。你知道吗

suitName = ("hearts", "diamonds", "spades", "clubs")
rankName = ("Ace", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King")

def translate():
    cardNum = 0

    for x in rankName:
        rank = x

        for y in suitName:
            suit = y

            cards = ""
            cards += rank
            cards += " of "
            cards += suit
            i += 1

            print cardNum
            print "    "
            print cards

而且,rank = xsuit = y可能只是for rank in rankName:for suit in suitName。另外,预先初始化变量也不是很有用。你知道吗

也有实现你想要的东西的内置方法。你知道吗

import itertools

suitName = ("hearts", "diamonds", "spades", "clubs")
rankName = ("Ace", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King")

cross_product = itertools.product(rankName, suitName)

for card_num, (rank, suit) in enumerate(cross_product, start=1):
  print("{0}    {1} of {2}".format(card_num, rank, suit))

相关问题 更多 >

    热门问题