PYTHON

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ą.