Python f-strings
Inhalt
Python f-strings¶
Mit Python 3.6 PEP498 wurden die sogenannten f-strings eingeführt. Python f-strings sind vor allen besser lesbar, somit weniger fehleranfällig und sollten deshalb von Beginn an verwendet werden. f-strings sind auch schneller als str.format()
.
Viele Konzepte kennen wir schon von str.format()
.
Grundlagen¶
Strings sind mit f-strings besonders gut lesbar.
study = 'KI'
year = 2019
print(f'Seit {year} ist ein {study}-Studium an der JKU möglich!')
Seit 2019 ist ein KI-Studium an der JKU möglich!
Das gilt auch für Datentypen wie dict
.
person = {'name': 'Max Musterman', 'year': 1980}
print(f"{person['name']} ist im Jahr {person['year']} geboren.")
Max Musterman ist im Jahr 1980 geboren.
In Python 3.8 wurde die neue f-string Syntax erweitert. Mit f"{var=}
wird nicht nur der Variablenwert, sondern auch die Variable ausgegeben. Als Beispiel definieren wir die Variable python
mit dem Wert 3.8
.
python = 3.8
print(f"{python=}")
python=3.8
Als Anwendung soll das Debugging und das Logging genannt werden.
In Python 3.7 wäre eine etwas längerer Ausdruck notwendig.
python = 3.7
print(f"python={python}")
python=3.7
Mit Python 3.8 ist auch das Definieren von Variablen in einem String möglich. Dazu müssen wir die Syntax {(var:=value)}
verwenden. Die Variable steht dann auch außerhalb des f-strings zur Verfügung.
print(f"Ein Quadrat hat die Seitenlänge {(s:=2)} und eine Fläche von {s**2}!")
s
Ein Quadrat hat die Seitenlänge 2 und eine Fläche von 4!
2
Funktionen¶
Weiters können auch Funktionen in Python f-strings verwendet werden.
import math
arg = 0
print(f'{math.sin(arg) = }')
print(f'{math.cos(arg) = }')
math.sin(arg) = 0.0
math.cos(arg) = 1.0
Präzision¶
Auch das Formatierung der Nachkommazahlen können wir wie in .format()
verwenden.
value = 3.141592653589793
print(f'{value:.2f}')
print(f'{value:.4f}')
3.14
3.1416
Für komplexe Zahlen:
c_number = 1.111 + 2.222j
print(f'{c_number:.2f}')
print(f'{c_number:.4f}')
1.11+2.22j
1.1110+2.2220j
Zahlensysteme¶
Zahlen können in verschiedenen Systemen dargestellt werden. Mit Python f-strings können wir das Dezimalzahlensystem in das Binär, Hexadezimal oder Oktalsystem umrechnen. Diese Zahlensysteme sind in der Informatik von großer Bedeutung.
Besonders hilfreich ist die wissenschaftliche Darstellung von Zahlen.
number = 301
# hexadecimal
print(f'{number:b}')
# hexadecimal
print(f'{number:x}')
# octal
print(f'{number:o}')
# scientific
print(f'{number:.2e}')
100101101
12d
455
3.01e+02
Trennzeichen¶
Für eine bessere Lesbarkeit großer Zahlen schreiben wir oft Zahlen unter Verwendung eines Trennzeichens.
income = 1000000
print(f"{income:,}")
print(f"{income:_}")
1,000,000
1_000_000
Wir können das auch bei float
Zahlen anwenden.
income = 100000
month = 12
ipm = income/month
print(f"{ipm:,.3f}")
print(f"{ipm:_.3f}")
8,333.333
8_333.333
Prozentsätze¶
Anstatt f
können wir mit %
eine Zahl als Prozentsatz formatieren. Dabei werden Zahlen zwischen \(0.\) und \(1.\) als Prozentzahlen zwischen \(0%\) und \(100%\) aufgefasst.
print(f"{0.5 :.2%}")
50.00%
print(f"{-0.5 :.2%}")
-50.00%
Das könnte zum Beispiel für das Benoten von Klausuren zum Einsatz kommen.
total_points = 30
correct_points = 19
print(f" Sie haben {correct_points/total_points :.2%} der möglichen Punkte erreicht.")
Sie haben 63.33% der möglichen Punkte erreicht.