Kartenspiel mit Unicode Symbolen ♥

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
anogayales
User
Beiträge: 456
Registriert: Mittwoch 15. April 2009, 14:11

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
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

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.
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.
anogayales
User
Beiträge: 456
Registriert: Mittwoch 15. April 2009, 14:11

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
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.
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

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.
anogayales
User
Beiträge: 456
Registriert: Mittwoch 15. April 2009, 14:11

Da habt ihr natürlich recht.

Vielen Dank!

Grüße,
anogayales
Antworten