PYTHON Formatowanie ciągów znaków
format – metoda formatowania ciągów znaków
Przykład:
napis = 'Miał {}cm wzrostu, ważył {}kg.'.format(180,85) print(napis)
Efekt: Miał 180cm wzrostu, ważył 85kg.
Za pomocą metody format podstawiliśmy pod wolne miejsca oznaczone nawiasami klamrowymi wartościami będącymi jej parametrami wejściowymi.
Przykład 2: kolejność
napis = 'Miał {1}cm wzrostu, ważył {0}kg.'.format(85,182) print(napis)
Wolne miejsca możemy numerować. Numeracja rozpoczyna się od 0 i odpowiada kolejności parametrów wejściowych metody format.
Efekt: Miał 180cm wzrostu, ważył 85kg.
Ilość znaków
Przykład:
print('Uczeń {0} zdobył {1} punktów.'.format(1,7)) print('Uczeń {0} zdobył {1} punktów.'.format(14,45))
Efekt:
Uczeń 1 zdobył 7 punktów. Uczeń 14 zdobył 45 punktów.
Problem: chcielibyśmy, aby teksty następujące po sobie były tak samo sformatowane, aby poszczególne ich elementy znajdowały się bezpośrednio pod sobą.
Rozwiązanie:
print('Uczeń {0:2} zdobył {1:3} punktów.'.format(1,7)) print('Uczeń {0:2} zdobył {1:3} punktów.'.format(14,45)) print('Uczeń {0:2} zdobył {1:3} punktów.'.format(22,100))
Efekt:
Uczeń 1 zdobył 7 punktów. Uczeń 14 zdobył 45 punktów. Uczeń 22 zdobył 100 punktów.
Wyjaśnienie:
Po numerze jaki posiada dane miejsce do uzupełnienia danych po symbolu dwukropka umieszczamy ilość znaków, jaką na dany element przeznaczamy. W przykładzie numerom uczniów zostały przydzielone 2 miejsca, natomiast wyniki mieszczą się w przedziale trzycyfrowym.
Precyzja liczb
Przykład:
cena_standardowa = 49.99 cena_promocyjna = cena_standardowa * 0.93 print('Ten produkt kosztuje {}zł.'.format(cena_promocyjna)) print('Ten produkt kosztuje {:3.2f}zł.'.format(cena_promocyjna))
Efekt:
Ten produkt kosztuje 46.490700000000004zł. Ten produkt kosztuje 46.49zł.
Kolejnym elementem, po ograniczeniu ilości znaków jest precyzja liczb, czyli ilość liczb po przecinku, do której liczba zostaje zaokrąglona.
Aby dokonać takiego ograniczenia, wprowadzamy symbol kropki (.), po czym podajemy ilość miejsc po przecinku, jaka ma się wyświetlić, po czym stawiamy literę f, określając typ danych na liczbę zmiennoprzecinkową.
Typy danych
Często wykorzystywane typy danych:
- d | liczba dziesiętna ze znakiem
- u | liczba dziesiętna bez znaku
- f | liczba zmiennoprzecinkowa
- c | pojedynczy znak
- s | ciąg znaków
Przykład:
print('Produkt nr {0:2d} kosztuje {1:s} jedyne {2:3.2f}zł.'.format(1, 'do wtorku', 9.9))
I tak kolejno:
- 0:2d | pierwszy element, ustalenie ilości znaków na 2, typ: liczba dziesiętna
- 1:s | drugi element, typ: ciąg znaków
- 2:3.2f | trzeci element, ustalenie ilości znaków dziesiętnych na 3, ustalenie precyzji na 2 miejsca po przecinku, typ: float
Dopełnienia
Ustawiając ilość znaków przeznaczonych na liczbę czy ciąg znaków, pozostawiamy część miejsc wypełnionych z automatu spacjami. Możemy tą część wypełnić dowolnymi symbolami i to zarówno umieszczając je przed, jak i po naszej wartości.
Przykład:
print('Wynik testu ucznia {:a<3} wynosi {:b>5}'.format(1, 50)) print('Wynik testu ucznia {:a<3} wynosi {:b>5}'.format(10, 3)) print('Wynik testu ucznia {:a<3} wynosi {:b>5}'.format(100, 120))
Efekt:
Wynik testu ucznia 1aa wynosi bbb50 Wynik testu ucznia 10a wynosi bbbb3 Wynik testu ucznia 100 wynosi bb120
Przed wartością ustalającą ilość znaków możemy umieścić dowolny symbol, po którym nastąpi znak mniejszości lub większości. Znak mniejszości oznacza, iż naszym symbolem zostanie wypełniona przestrzeń za wartością, większości, przed wartością.