Wie verwende ich die for-Schleife zum Drucken von Karten?
-
29-10-2019 - |
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
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?
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.