2016-06-03 11 views
0

Ich möchte eine Liste von String-Elementen erstellen, die ein Kartenspiel ist.Verketten Sie zwei Listen mit verschachtelten for-Schleifen in Python

Ich habe zwei Listen von Strings (1-Ace und Suiten) erstellt. Ich möchte geschachtelte for-Schleifen verwenden, um dies zu tun, und ein Wort dazwischen einfügen ("von"). Ich habe das schnell und einfach gemacht, wenn ich alles gedruckt habe, aber als ich an eine andere Liste (Deck) angehängt habe, bin ich auf Probleme gestoßen, weil ich die String-Variable, die ich möchte, erstelle.

BEARBEITEN: Ich erhalte den folgenden Fehler: "inkonsistente Verwendung von Tabs und Einrückung".
Ich benutze zur Zeit Notizblock ++, aber ich hatte den gleichen Fehler früher, wenn ich die IDLE verwendet.

nums = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King", "Ace"] 
suite = ["Diamonds", "Hearts", "Clubs", "Spades"] 
deck = [] 

for element in nums: 
    for suit in suite: 
     card = "%s of %s" % (element, suit) 
     deck.append(card) 
     print (deck) 

Mein Ziel ist es, eine Liste von Strings ähnlich dies ... [ "1 von Herzen", "Ace of spades"] haben ...

Dank!

+0

Der Code ist gut so, wie es ist. Klingt so, als ob deine IDE dich stolpern würde. Ich würde ein Upgrade empfehlen, wenn Sie die Standard IDLE verwenden. – TheLazyScripter

+0

Ja, das ist auch das, was ich abgeschlossen habe. Ein bisschen Schmerz, aber nerviger als alles andere. Vielen Dank! – AmericanMade

Antwort

2

Der Fehler weist auf falsches Mischen von Registerkarten und Leerzeichen hin. Die meisten Texteditoren bieten eine Option "Tabs durch Leerzeichen ersetzen" oder etwas Ähnliches. Oder, wenn Sie vorhaben, mit Python zu bleiben, empfehle ich dringend, eine seriöse IDE wie (mein Favorit) oder Eclipse/PyDev zu verwenden.

Ansonsten ist nichts falsch mit dem Code, den Sie gepostet haben. itertools.product ist dein Freund, wenn Sie die Aufgabe allerdings erleichtern wollen (und vermeiden Vertiefung insgesamt):

from itertools import product 

deck = [' of '.join(p) for p in product(nums, suite)] 

Oder noch kürzer mit Hilfe von map:

deck = map(' of '.join, product(nums, suite)) 
+0

Danke, aber könnten Sie mir sagen, wie ich diese Arbeit so machen kann, wie ich es mache? Ich denke, es sollte sehr einfach sein, aber ich bekomme den Fehler: "Inkonsistente Verwendung von Tabs und Einrückung". Ich will nur wissen warum! – AmericanMade

+1

Klingt so, als würden Sie Registerkarten und Leerzeichen für Ihren Einzug mischen. Verwenden Sie besser eine richtige IDE, um auf die richtige Formatierung zu achten. ** Bearbeiten: ** Es ist nichts falsch mit Ihrem Code. – schwobaseggl

+1

@AmericanMade Sie sollten diese Fehlermeldung in Ihrem Beitrag setzen! – schwobaseggl