Ausgabe von Variablen
Der übliche Weg der Ausgabe des Inhalts einer Variable ist die print
-Funktion, die eine Zeichenfolge auf der Kommandozeile oder in Jupyter-Notebooks ausgibt. Die Verwendung ist denkbar einfach:
Beispiel
count = 11
print (count) # gibt "11" aus
Bei Dezimalzahlen werden die signifikanten Stellen ohne terminierende Nullen ausgegeben:
Beispiel
share = 1/9
print(share) # 0.1111111111111111
share = 0.1
print(share) # 0.1
Ausnahmen sind sehr große oder sehr kleine Zahlen, bei denen die wissenschaftliche Schreibweise zum Einsatz kommt:
Beispiel
print(10.**100) # 1e+100
Bei Ganzzahlen wird immer die gesamte Zahl angegeben, da diese mit beliebig vielen signifikanten Stellen gespeichert wird:
Beispiel
print(10**100) # 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Zeichenketten und Wahrheitsausdrücke werden wenig überraschend komplett wiedergegeben:
Beispiel
print (True) # True
print ("Hallo") # Hallo
Bei Containern erhält man die Darstellung der Container wie sie auch als Programmcode-Eingabe angenommen werden würde, wobei die einzelnen Elemente (sowohl Wert-Datentypen oder Container-Datentypen) wiederum so dargestellt werden wie ein einzelnes Element des jeweiligen Datentyps:
Beispiel
print ([]) # []
print (["A", 2, "B"]) # ['A', 2, 'B']
print (set([1,1,2])) # {1, 2}
print ([["A", "B"], [1, 2]]) # [['A', 'B'], [1, 2]]
Man kann der print
-Funktion beliebig viele (Positions-)Argumente übergeben. Diese werden durch Leerzeichen getrennt ausgegeben:
Beispiel
print("A", 2) # A 2
f-Strings
Da man häufig nicht nur den Inhalt eines Ausdrucks ausgeben möchte, sondern typischerweise die Ausgabe in weiteren Text einbettet, ist mehr Einflussnahme auf die Darstellung oft hilfreich. Ein Weg dazu sind f-strings
, also Zeichenketten, die mit dem Präfix f
vor den Anführungszeichen versehen werden.
Beispiel
kinetic_energy = 42.4711
print (f"Kinetic Energy: {kinetic_energy} eV") # Kinetic Energy: 42.4711 eV
Dabei wurde der Platzhalter {kinetic_energy}
ausgewertet und durch den (zur Zeichenkette konvertierten) Inhalt ersetzt. Formal ist das äquivalent zu
Beispiel
kinetic_energy = 42.4711
print ("Kinetic Energy:", kinetic_energy, "eV") # Kinetic Energy: 42.4711 eV
Der Platzhalter kann jedoch auch Rechenoperationen enthalten:
Beispiel
kinetic_energy = 42.4711
hartree = 27.2113862459
print (f"Kinetic Energy: {kinetic_energy/hartree} a.u.") # Kinetic Energy: 1.560784137059508 a.u.
Ist das letzte Zeichen des Platzhalters ein Gleichheitszeichen =
, so wird der Name bzw. der Ausdruck und der Wert zusammen ausgegeben:
Beispiel
kinetic_energy = 42.4711
hartree = 27.2113862459
print (f"{kinetic_energy=} {kinetic_energy/hartree=}") # kinetic_energy=42.4711 kinetic_energy/hartree=1.560784137059508
Neben dieser syntaktischen Vereinfachung erlauben f-strings
aber mehr Einflussnahme auf die konkrete Darstellung, was oft die Lesbarkeit der Ausgabe verbessert. Dazu wird in dem Platzhalter {expression:format}
mit dem Doppelpunkt :
ein zweiter optionaler Abschnitt eingefügt, der Formatanweisungen enthält.
Dabei kann zunächst eine feste Breite für die Ausgabe definiert werden:
Beispiel
firstname = "Alessandro"
lastname = "Binomi"
print(f"| {firstname:20} | {lastname:20} |")
firstname = "Julius"
lastname = "Eigen"
print(f"| {firstname:20} | {lastname:20} |")
# | Alessandro | Binomi |
# | Julius | Eigen |
Jetzt lässt sich die Ausgabe ausrichten (man beachte das Größerzeichen >
und Caret ^
)
Beispiel
firstname = "Alessandro"
lastname = "Binomi"
print(f"| {firstname:>20} | {lastname:^20} |")
firstname = "Julius"
lastname = "Eigen"
print(f"| {firstname:>20} | {lastname:^20} |")
# | Alessandro | Binomi |
# | Julius | Eigen |
Bei Ganzzahlen und Dezimalzahlen erfolgt die Darstellung automatisch rechtsbündig, wenn mehr Raum gegeben wird:
Beispiel
kinetic_energy = 42.4711
print(f"|{kinetic_energy:10}|") # | 42.4711|
Die Anzahl der Nachkommastellen lässt sich nach der Breitenangabe des Feldes mittels Punkt getrennt angeben. In diesem Fall muss aber klargestellt werden, ob die wissenschaftliche Schreibweise (Suffix e
) oder Dezimalschreibweise (Suffix f
) gewünscht ist:
Beispiel
kinetic_energy = 42.4711
print(f"|{kinetic_energy:10.2e}|") # | 4.24e+01|
print(f"|{kinetic_energy:10.2f}|") # | 42.47|