Seite 1 von 1
format() Einstieg
Verfasst: Sonntag 1. Februar 2015, 12:50
von MoonKid
Mir wurde gesagt, ich soll format() als printf()-artigen-Ersatz verwenden.
Verstehe nicht, warum das hier nicht funktioniert.
Code: Alles auswählen
>>> format("%s %s %s" % '1', '2', '3')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: not enough arguments for format string
Re: format() Einstieg
Verfasst: Sonntag 1. Februar 2015, 13:10
von EyDu
Nun hast du alle Formatierungsmöglichkeiten vermischt

Entweder:
Oder besser:
Letzteres bietet noch viel mehr ausgeklügelte Möglichkeiten, schau dazu in der Dokumentation mal unter String Formatting nacht.
Re: format() Einstieg
Verfasst: Sonntag 1. Februar 2015, 13:17
von BlackJack
@MoonKid: Du mischst hier gerade auf ganz eigenartige Weise zwei verschiedene Arten von Zeichenkettenformatierung. Du rufst die `fomat()`-Funktion mit drei Argumenten auf. Das erste Argument ist der Ausdruck ``"%s %s %s" % '1'``. Der binäre ``%``-Operator auf Zeichenketten formatiert den Wert auf der rechten Seite (Einzelwert oder Tupel mit mehreren Werten) in die Platzhalter in der Zeichenkette links vom Operator. Du hast da aber nun drei Platzhalter und nur einen Wert. Das führt zu besagter Ausnahme. Du möchtest entweder:
Oder:
Code: Alles auswählen
In [3]: '{0} {1} {2}'.format('1', '2', '3')
Out[3]: '1 2 3'
Hier wird die `format()`-*Methode* auf einer Zeichenkette verwendet. Die `format()`-*Funktion* kann nur einen einzelnen Wert als Zeichenkette formatieren und erwartet diesen Wert und eine Formatspezifikation als Argumente.
Re: format() Einstieg
Verfasst: Sonntag 1. Februar 2015, 15:54
von MoonKid
Nachschlagbar:
https://docs.python.org/3/tutorial/inputoutput.html
Wo wir gerade bei Stings sind. Es gibt doch bestimmt auch ne schöne Python-Regel über die Verwendung von " und ' ? Wann was und warum?
Re: format() Einstieg
Verfasst: Sonntag 1. Februar 2015, 19:06
von /me
MoonKid hat geschrieben:Es gibt doch bestimmt auch ne schöne Python-Regel über die Verwendung von " und ' ? Wann was und warum?
Das ist echt Geschmackssache. Ich bevorzuge rein optisch die einfachen Hochkommas. Das spart auch Tinte, wenn man den Code mal druckt.

Re: format() Einstieg
Verfasst: Sonntag 1. Februar 2015, 19:32
von darktrym
Die Regel lautet, entweder das eine oder das andere verwenden.
Die Pascal Schreibweise mag ich gar nicht, schon <> sah komisch aus.
Und Tinte ist mir egal, ich hab einen Laserdrucker.

Re: format() Einstieg
Verfasst: Sonntag 1. Februar 2015, 19:35
von BlackJack
Ich verwende ' weil das auch die üblichen Begrenzer bei der `repr()`-Darstellung sind. Ausser bei Docstrings da verwende ich Triple-" weil das a) alle so machen und b) `pydoc` mal Probleme bei anderen Begrenzern hatte.
Re: format() Einstieg
Verfasst: Sonntag 1. Februar 2015, 20:05
von Sirius3
Normalerweise benutze ich ', falls ' im String vorkommen, dann ", wenn sowohl ' als auch " vorkommen, dann ''' wenn sowohl ' als auch " als auch ''' vorkommen, dann """, wenn sowohl ' als auch " und ''' und """ vorkommen, dann geh ich Lotto-Spielen.
Re: format() Einstieg
Verfasst: Montag 2. Februar 2015, 08:12
von mutetella
Ich warte immer erstmal den Name/SyntaxError ab. Wenn dann der erste 'Hä?'-Impuls verflogen ist und sich ein "War ja wieder klar: '...' vergessen!" einstellt, und so weiter...
mutetella