print-Ausgabe - Leerstellen vor Werten in Klammern

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
kodela
User
Beiträge: 185
Registriert: Montag 12. Oktober 2015, 21:24
Wohnort: Landsberg am Lech
Kontaktdaten:

Hallo,

wenn ich mit print eine Zahl oder einen String in Klammern ausgebe, wird vor und hinter diesen eine Leerstelle ausgegeben.

Beispiele:

n = 12
s = "Test"
print("n in Klammer (", n, ") und s in Klammer(", s, ")")

damit bekomme ich:

n in Klammer ( 12 ) und s in Klammer ( Test )

möchte aber:

n in Klammer (12) und s in Klammer (Test)

Wie kann man das erreichen?

MfG, kodela?
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@kodela: dafür nimmt man .format

Code: Alles auswählen

n = 12
s = "Test"
print("n in Klammer ({}) und s in Klammer({})".format(n, s))
Benutzeravatar
pyHoax
User
Beiträge: 84
Registriert: Donnerstag 15. Dezember 2016, 19:17

Das kannst du gut so machen:

Code: Alles auswählen

print("n in Klammer (%d) und s in Klammer(%s)" % (n,s))
Oder moderner mit Format:

Code: Alles auswählen

print("n in Klammer ({0}) und s in Klammer({1})".format(n,s))
Das wird noch getopt durch diesen Syntax:

Code: Alles auswählen

print("n in Klammer ({N}) und s in Klammer({S})".format(N=n,S=s))
kodela
User
Beiträge: 185
Registriert: Montag 12. Oktober 2015, 21:24
Wohnort: Landsberg am Lech
Kontaktdaten:

Danke Euch beiden.

Jetzt sieht es so aus, wie ich es wollte. Der Einfachheit halber habe ich mich für den Vorschlag von @Sirius3 entschieden. Damit habe ich bei vier Werten die kürzesten Zeilen.
Ich habe aber auch interessehalber alle drei Vorschläge von @pyHoax ausprobiert, mit denen es natürlich auch funktioniert.

MfG, kodela
Benutzeravatar
pyHoax
User
Beiträge: 84
Registriert: Donnerstag 15. Dezember 2016, 19:17

mit denen es natürlich auch funktioniert.
Bei der print/format Funktionalität ist python doch weit ab vom Zen:
Es sollte einen – und vorzüglich NUR einen – offensichtlichen Weg der Lösung geben.
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

pyHoax hat geschrieben:Bei der print/format Funktionalität ist python doch weit ab vom Zen
Und mit Python 3 gibt es noch eine weitere Möglichkeit:

Code: Alles auswählen

print("n in Klammer (", n, ") und s in Klammer(", s, ")", sep="")
BlackJack

@kbr: Die Möglichkeit gibt's in Python 2.7 auch schon wenn man ``print`` zu einer Funktion macht. Ab Python 3.6 gibt's noch f-Strings. Ist zumindest syntaktisch eine weitere Möglichkeit.
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

@BlackJack: Ja, stimmt. Ob mir die neuen f-Strings gefallen, weiß ich noch nicht; ich halte es zumeist gerne mit 'explicit is better than implicit'.
Antworten