Freiräume bei print - Befehlen verbieten

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
Benutzeravatar
ixaM
User
Beiträge: 13
Registriert: Samstag 9. Juli 2016, 15:32
Wohnort: Nähe München

Soo. Habe eine eigentlich ganz simple Frage. Hier ein Beispiel, darunter findet ihr mein genaues Problem. x = 1
print("So viele Probleme habe ich:", x, ".")
[codebox=text file=Unbenannt.txt][/code]
Die Ausgabe lautet dann ja "So viele Probleme habe ich: 1 ."
Wie kann ich das Leerzeichen zwischen der 1 und dem Punkt entfernen?
Benutzeravatar
ixaM
User
Beiträge: 13
Registriert: Samstag 9. Juli 2016, 15:32
Wohnort: Nähe München

Und, wo wir gleich dabei sind, eine weitere Frage habe ich noch. Wie lasse ich einen Betrag auf zwei Nachkommastellen anzeigen? Selbst wenn die Nachkommastellen 0 lauten? Mache momentan ein Programm, was mit Finanzen zu tun hat und da sieht es dann doof aus, wenn da beispielsweise steht:
1.17€
1 €
1.49€
etc. Ich denke ihr habts verstanden.
BlackJack

@ixaM: Am meisten Kontrolle hat man wenn man nur *eine* Zeichenkette ausgibt, und die selbst aus den Werten erstellt:

Code: Alles auswählen

>>> x = 1

>>> print('So viele Probleme habe ich: {}.'.format(x))
So viele Probleme habe ich: 1.
BlackJack

Zur zweiten Frage bleibt die Antwort die gleiche:

Code: Alles auswählen

>>> print('{:.2f}€'.format(1.17))
1.17€

>>> print('{:.2f}€'.format(1.0))
1.00€
Benutzeravatar
ixaM
User
Beiträge: 13
Registriert: Samstag 9. Juli 2016, 15:32
Wohnort: Nähe München

Danke für die schnelle Hilfe :)
BlackJack

Wobei, wenn man letzteres *richtig* machen möchte, dann installiert man sich das `babel`-Package:
[codebox=pycon file=Unbenannt.txt]>>> from babel.numbers import format_currency
>>> print(format_currency(4.2, 'EUR', locale='de_DE'))
4,20 €
>>> print(format_currency(65536, 'EUR', locale='de_DE'))
65.536,00 €
>>> print(format_currency(65536, 'EUR', locale='en_GB'))
€65,536.00
>>> print(format_currency(65536, 'EUR', locale='de_AT'))
€ 65.536,00[/code]
Dann bekommt man nicht nur zwei Nachkommastellen, sondern auch die zum Gebietsschema passenden Tausender- und Dezimaltrennzeichen, sowie den passenden Ort für das Währungszeichen.
Benutzeravatar
ixaM
User
Beiträge: 13
Registriert: Samstag 9. Juli 2016, 15:32
Wohnort: Nähe München

Super danke Dir! Aber nochmal auf .format bezogen:
Ist es möglich dabei mehrere Variablen zu nutzen?

So in etwa hätte ich mir das vorgestellt:

Code: Alles auswählen

einkommen_anfang = 2000
einkommen_ende = 3000
print("Bei uns beläuft sich Ihr Gehalt anfangs auf {:.2f}€. Nach ein paar Jahren jedoch verdienen Sie bereits {:.2f}€.".format(einkommen_anfang; einkommen_ende))
Das geht aber nicht. Das ";" meldet Python als SyntaxError und wenn man nur ein Komma nimmt hat man als Ergebnis:
"Bei uns beläuft sich Ihr Gehalt anfangs auf {:.2f}€. Nach ein paar Jahren jedoch verdienen Sie bereits 3000.00€."
Gibt es eine andere Möglichkeit mehrere Variablen da einzubauen oder ist das nicht möglich und ich muss auf andere Funktionen zurückgreifen oder ggf. den Text umändern?
Zuletzt geändert von Anonymous am Freitag 16. Juni 2017, 19:46, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@ixaM: Du mußt schon gültiges Python schreiben, und Parameter trennt man mit Komma und nicht mit Strichpunkt. Mit Komma funktioniert es auch:

Code: Alles auswählen

einkommen_anfang = 2000
einkommen_ende = 3000
print("Bei uns beläuft sich Ihr Gehalt anfangs auf {:.2f}€. Nach ein paar Jahren jedoch verdienen Sie bereits {:.2f}€.".format(einkommen_anfang, einkommen_ende))
# Bei uns beläuft sich Ihr Gehalt anfangs auf 2000.00€. Nach ein paar Jahren jedoch verdienen Sie bereits 3000.00€.
Antworten