Lekcje modułu (4/4)
Wypisywanie i f-stringi
Aby przekazać coś użytkownikowi (lub zobaczyć, co dzieje się wewnątrz naszego
programu), używamy wbudowanej funkcji print(...). Do tworzenia tekstu z wielu
wartości nowoczesną i preferowaną składnią jest f-string.
print(...)
print("Ciao, mondo!") # Ciao, mondo!
print("a", "b", "c") # a b c (separati da spazio)
print(2 + 2) # 4
print("riga 1", "riga 2") # riga 1 riga 2print może przyjąć dowolną liczbę argumentów: łączy je spacją (domyślnie) i
dodaje znak nowej linii na końcu. Możesz zmienić oba zachowania za pomocą parametrów
sep i end:
print("a", "b", "c", sep="-") # a-b-c
print("senza newline", end="") # niente \n dopof-string: nowoczesna interpolacja
Wyrażenie f-string to ciąg znaków poprzedzony literą f: wewnątrz nawiasów
klamrowych {...} możesz wstawić dowolne wyrażenie Pythona, które zostanie
ocenione i wstawione do wyniku:
nome = "Ada"
anni = 30
print(f"Mi chiamo {nome} e ho {anni} anni.")
# Mi chiamo Ada e ho 30 anni.Wewnątrz nawiasów klamrowych możesz umieszczać wywołania, operacje, dostępy do obiektów — pod każdym względem jest to kod Pythona:
prezzo = 12.5
quantita = 3
print(f"Totale: {prezzo * quantita:.2f} €")
# Totale: 37.50 €Zapis :.2f po dwukropku to specyfikacja formatu (format spec): w tym przypadku "dwa miejsca po przecinku, stały punkt". Najbardziej przydatne specyfikacje formatu:
:.Nf— N miejsc po przecinku (f"{pi:.4f}"→3.1416).:N/:>N/:<N/:^N— szerokość N, wyrównanie do prawej/lewej/środka.:_lub:,— separator tysięcy (f"{1000000:,}"→1,000,000).
Alternatywne składnie (dla odniesienia)
Przed f-stringami (wprowadzonymi w Pythonie 3.6) stosowano dwie formy, na które nadal można natknąć się w starszym kodzie:
# stile .format() — verboso ma esplicito
"{} ha {} anni".format("Ada", 30)
# stile %-formatting — molto vecchio
"%s ha %d anni" % ("Ada", 30)W nowym kodzie zawsze używaj f-stringów: są krótsze, bardziej czytelne i szybsze.
Zaawansowane formatowanie z f-stringami
F-stringi obsługują bogate specyfikacje formatowania bezpośrednio wewnątrz nawiasów klamrowych. Na przykład, aby sformatować liczbę dziesiętną z dokładnie dwoma miejscami po przecinku, możesz napisać:
price = 19.99
print(f"Price: {price:.2f} $")Specyfikator :.2f wskazuje, że chcemy przedstawić liczbę zmiennoprzecinkową z dokładnie dwoma miejscami po przecinku.
Spróbuj sam
Mając dane `name = 'Ada'` i `age = 30`, utwórz ciąg znaków 'Ada ha 30 anni' za pomocą f-stringa i przypisz go do `line`. Oceń `line`.
Pokaż wskazówkę
Składnia: f"coś {variable} coś innego"
Rozwiązanie dostępne po 3 próbach
Ćwiczenie powtórzeniowe
Wypisz za pomocą print() ciąg znaków 'pi greco vale 3.14' zaczynając od `pi = 3.14159`, używając f-stringa ze specyfikacją formatu z 2 miejscami po przecinku.
Pokaż wskazówkę
Specyfikacja formatu znajduje się po dwukropku wewnątrz nawiasów klamrowych: {pi:.2f}.
Rozwiązanie dostępne po 3 próbach
Dodatkowe wyzwanie
Mając daną zmienną `price` ustawioną na `19.99`, użyj f-stringa do utworzenia ciągu znaków `'Price: 19.99 €'` i zapisz go w `receipt_line`. Na koniec oceń zmienną.
Pokaż wskazówkę
Użyj f"Price: {price} €" i przypisz wynik do receipt_line.
Rozwiązanie dostępne po 3 próbach