Seite 1 von 1

Kartenspiel mit Unicode Symbolen ♥

Verfasst: Samstag 24. März 2012, 19:10
von anogayales
Sehr geehrte Python Community :)

Ich programmiere gerade eine Kartenspiel und möchte dazu die Unicode Symbole

Code: Alles auswählen

suites = ["♦", "♥", "♠", "♣"]
verwenden.

Leider verweigert mir die Konsolenausgabe von Windows und auch die von PyCharm den Dienst, sobald ich die Zeichen in einer Liste oder einem Tupel ausgeben möchte.

Folgender Code verdeutlicht meine Problematik:

Code: Alles auswählen

print "♥", ["♥"]
erzeugt folgenden Output:

Code: Alles auswählen

♥ [u'\u2665']
Gibt es eine Möglichkeit das Symbol auch in der Liste aus solches anzuzeigen?

Grüße,
anogayales

Re: Kartenspiel mit Unicode Symbolen ♥

Verfasst: Samstag 24. März 2012, 20:06
von cofi
Keine Umgebung verweigert den Dienst, das ist schlichtweg das normale Verhalten von Python: `str(liste)` erzeugt

Code: Alles auswählen

'[{}]'.format(', '.join(repr(x) for x in liste))
Die einzige Moeglichkeit ist die Formatierung selbst vorzunehmen. Fuer eindimensionale Listen reicht im Code oben `repr` durch `str` bzw `unicode` auszutauschen.

Re: Kartenspiel mit Unicode Symbolen ♥

Verfasst: Samstag 24. März 2012, 20:09
von deets
Nein, das geht nicht. Listen & Co nehmen die repr Methode - und das mit gutem grund: die Darstellung soll robust sein & nicht durch terminalsettings korrumpiert werden.

Schreib dir einfach eine hilfsfunktion.

Re: Kartenspiel mit Unicode Symbolen ♥

Verfasst: Samstag 24. März 2012, 20:14
von anogayales
Alles klar, ich wollte sowieso eine Klasse für eine Karte erstellen, dann kann ich grad die repr Methode an der stelle überschreiben.

Grüße,
anogayales

Re: Kartenspiel mit Unicode Symbolen ♥

Verfasst: Samstag 24. März 2012, 20:23
von BlackJack
@anogayales: Das solltest Du tunlichst vermeiden, denn wie deets ja schon geschrieben hat, sollte die `repr()`-Funktion eine möglichst robuste und für den Programmierer und die Fehlersuche Darstellung liefern und nichts was vorrangig schön zum Anzeigen ist.

Re: Kartenspiel mit Unicode Symbolen ♥

Verfasst: Samstag 24. März 2012, 23:26
von derdon
Und um nicht nur zu sagen, welche Methode *nicht* geeignet ist (__repr__), sondern auch welche du zur Darstellung in der Konsole nehmen kannst: __str__ ist der Freund zum printen von Objekten.

Re: Kartenspiel mit Unicode Symbolen ♥

Verfasst: Montag 26. März 2012, 14:14
von anogayales
Da habt ihr natürlich recht.

Vielen Dank!

Grüße,
anogayales