Frage

Ich habe alle 52 Karten eingerichtet und versuche, alle 52 Karten mit zu drucken for loop.Ich weiß nicht, wie ich meine einstellen soll for loop an dieser Stelle.

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]

Ich möchte so drucken

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
War es hilfreich?

Lösung

Ihre Funktion define_cards muss die Liste zurückgeben.Fügen Sie am Ende return cards hinzu.

Dann müssen Sie diese Funktion tatsächlich aufrufen / ausführen.

Dann können Sie auf einzelne Karten in dieser Liste zugreifen:

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

Wenn Sie jedoch nach einer "pythonischeren" Lösung suchen, versuchen Sie Folgendes:

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)

Andere Tipps

Sehen Sie sich nur das an

    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]

Warum card_string[i] drucken?

Was ist mit cards[i] falsch?

generasacodicetagpre.

Antwort ist ein eleganter Ein-Liner: generasacodicetagpre.

Ergebnis: generasacodicetagpre.

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()

Warum keinen Iterator verwenden: generasacodicetagpre.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top