Kurs Python3: Więcej Formatowania

Python

 Łańcuchy znaków

Poprzednio pisałeś łańcuchy znaków, lecz nie wiesz co one robią. To ćwiczenie będzie polegało na utworzeniu kilku złożonych łańcuchów, by zrozumieć ich istnienie. Zatem czym są łańcuchy znaków?

Łańcuch znaków (ang. string) to zazwyczaj tekst, który chcemy wyświetlić lub wyeksportować z pisanego programu. Python po odnalezieniu tekstu w podwójnych (” „) lub pojedynczych (‚ ‚) cudzysłowach rozpoznaje go jako łańcuch znaków. Mogą zawierać dowolną liczbę zmiennych, które znajdują się w skrypcie. Zmienna to każda linijka kodu, w której ustawisz jakąś nazwę równą (=) pewnej wartości. W tym ćwiczeniu rodzaje_ludzi = 10, tworzy zmienną o nazwie rodzaje_ludzi i ustawą ją równą (=) wartości 10.  Ową wartość można umieścić w dowolnym łańcuchu znaków za pomocą {rodzaje_ludzi}. Jak widać należy w tym przypadku użyć specjalnego typu łańcuchów w celu „sformatowania”, a nazywa się to f-string, wygląda następująco:

f"Zmienna w środku łańcuchów znaków {zmienna}"
f'Coś tam napisane jest, lecz {inna_zmienna)"

Drugim sposobem formatowania składni to .format(), którą zauważysz w linii 17tej.
Łańcuchy znaków można umieszczać  w pojedynczym (‚ ‚) lub podwójnym(” „) cudzysłowu, jednakże użycie pojedynczych cudzysłowów wewnątrz łańcucha znaków ujętego w podwójne cudzysłowy spowoduje ich wydrukowanie, jak np.

1. print("Kot 'ma' Alę")
$ Kot 'ma' Alę

Kod

1. types_people = 2
2. x = f"Świat dzieli się na {types_people} rodzaje ludzi."
3.
4. the_wise = "mądrych"
5. sweeten = "słodzą"
6. y = f"Na {the_wise} i na tych co {sweeten}."
7. 
8. print(x)
9. print(y)
10.
11. print(f"Mówiłem: {x}")
12. print(f"Mówiłem też: '{y}'")
13. 
14. hailarous = True
15.
16. joke = "Zgadzasz się ze mną? {}"
17. print(joke.format(hailarous))
18.
19. l = "Lewa strona..."
20. r = "A to prawa strona."
21. print(l + r)

Wyjście

$ python3.6 ex6.py
Świat dzieli się na 2 rodzaje ludzi.
Na mądrych i na tych co słodzą.
Mówiłem: Świat dzieli się na 2 rodzaje ludzi.
Mówiłem też: 'Na mądrych i na tych co słodzą.'
Zgadzasz się ze mną? True
Lewa strona...A to prawa strona.

W poniższym kodzie, w linii nr. 3 znajduje się łańcuch znaków, w którym umieszczone zostało słowo jeden. Zmienna nie zostałaby ujęta w pojedyncze cudzysłowy. Używanie pojedynczych czy podwójnych cudzysłowów w zmiennych w języku Python jest dopuszczalne, jednak dla czytelności kodu, pojedyncze stosuje się do krótkich łańcuchów takich jak ‚ala’, ‚a’ lub ‚jeden’, etc.

Kod

1. print("Jednako waży cnota i występek.")
2. print("Widziałem:")
3. print("Człowieka który był {}.".format('jeden'))
4. print("Występny i ")
5. print("." * 10 )
6.
7. end1 = "C"
8. end2 = "n"
9. end3 = "o"
10. end4 = "t"
11. end5 = "l"
12. end6 = "i"
13. end7 = "w"
14. end8 = "y"
15. end9 = "."
16.
17. print(end1 + end2 + end3 + end4 + end5 + end6 + end7 + end8 + end9, end=' ')
18. end10 = "Prowadzony na rzeź."
19. print(f"{end10}")

Wyjście

$ python3.6 ex7.py
Jednako waży cnota i występek.
Widziałem:
Człowieka który był jeden.
Występny i
..........
Cnotliwy. Prowadzony na rzeź.

Jeszcze jedno ćwiczenie, dla lepszego utrwalenia, tym razem zastosujemy funkcjektóra przekształci zmienną formatter w inne łańcuchy znaków. W momencie gdy piszę formatter.format(…) mówię Pythonowi, aby wykonał czynności:

  1. Pobierz łańcuch znaków formatter zdefiniowany w linii 1.
  2. Wywołaj jego funkcję format, co daje efekt podobny do wykonania w wierszu poleceń o nazwie format.
  3. Przekaż do funkcji format cztery argumenty, które odpowiadają czterem sekwencjom znaków {} w zmiennej formatter. Podobne do przekazywania argumentów w poleceniu format.
  4. Wynikiem wywołania funkcji format na zmiennej formatter jest nowy łańcuch znaków, w którym sekwencje {} zostały zastąpione przez cztery zmienne, co drukowane jest przez polecenie print.

Kod

1. formatter = "{} {} {} {}"
2. 
3. print(formatter.format(1, 2, 3, 4))
4. print(formatter.format("jeden", "dwa", "trzy", "cztery"))
5. print(formatter.format(True, False, False, True))
6. print(formatter.format(formatter, formatter, formatter, formatter))
7. print(formatter.format(
8. "Tutaj będzie",
9. "Mój magiczny tekst",
10. "Pozbawiony sensu",
11. "Więc treść nie ma lęku"
12. ))

Wyjście

$ py ex8.py
1 2 3 4
jeden dwa trzy cztery
True False False True
{} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {}
Tutaj będzie Mój magiczny tekst Pozbawiony sensu Więc treść nie ma lęku

Zauważ iż w linii 5 wokół True oraz False nie zostały użyte cudzysłowy, zaś wokół „jeden”, itd. owszem. Python rozpoznaje True i False jako słowa kluczowe reprezentujące pojęcie prawdy i fałszu, tzw. Boolien, o którym opowiem niebawem. Jeśli umieścisz je w cudzysłowu, zostaną rozpoznane jako łańcuch znaków.

Zadanie do ex6

  1. Przeanalizuj kod pisząc komentarz nad każdą linią.
  2. Znajdź łańcuchy znaków, które są umieszczone w innych łańcuchach znaków, istnieją cztery takie wystąpienia.
  3. Na pewno cztery? Sprawdź dokładnie.
  4. Wyjaśnij dlaczego dodanie  l i r poprzez operator + daje dłuższy łańcuch znaków.

Zadanie do ex7

  1. Gdy popełnisz jakiś błąd, zapisuj go na kartce papieru, aby go później przeanalizować, pamiętaj że nie myli się ten, co nie robi nic. Nie przejmuj się błędami i przechodź przez kolejne zadania, a zauważysz że z czasem staną się one błahostką.
  2. Napisz jak poprzednio komentarze nad każda linią, ułatwi to analizę błędów.

Dodaj komentarz