Seite 1 von 1

Freiräume bei print - Befehlen verbieten

Verfasst: Freitag 16. Juni 2017, 17:16
von ixaM
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?

Re: Freiräume bei print - Befehlen verbieten

Verfasst: Freitag 16. Juni 2017, 17:20
von ixaM
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.

Re: Freiräume bei print - Befehlen verbieten

Verfasst: Freitag 16. Juni 2017, 17:21
von 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.

Re: Freiräume bei print - Befehlen verbieten

Verfasst: Freitag 16. Juni 2017, 17:23
von 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€

Re: Freiräume bei print - Befehlen verbieten

Verfasst: Freitag 16. Juni 2017, 17:28
von ixaM
Danke für die schnelle Hilfe :)

Re: Freiräume bei print - Befehlen verbieten

Verfasst: Freitag 16. Juni 2017, 18:14
von 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.

Re: Freiräume bei print - Befehlen verbieten

Verfasst: Freitag 16. Juni 2017, 18:47
von ixaM
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?

Re: Freiräume bei print - Befehlen verbieten

Verfasst: Freitag 16. Juni 2017, 19:00
von Sirius3
@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€.