W języku Python stosujemy dwie podstawowe funkcje pozwalające przeprowadzać operacje na kodach ASCIIASCIIASCII:
Funkcja
Przykład
chr(liczba) -> znak
chr(65) -> 'A'
ord(znak) -> liczba
ord('P') -> 80
Ważne!
Funkcja chr() przyjmuje jako argument liczbę całkowitą (kod ASCII), a zwraca odpowiadający jej znak.
Funkcja ord() działa odwrotnie – jako argument przyjmuje znak, a zwraca odpowiadający mu kod ASCII.
Ciągi znaków w języku Python
W języku Python teksty są obiektami typu string (a dokładniej obiektami klasy str).
Oto przykłady definiowania i wyświetlania ciągów znaków:
Linia 1. napis znak równości cudzysłów Python cudzysłów.
Linia 2. print otwórz nawias okrągły type otwórz nawias okrągły napis zamknij nawias okrągły zamknij nawias okrągły.
Linia 3. kratka wypisze dwukropek otwórz nawias ostrokątny class apostrof str apostrof zamknij nawias ostrokątny.
Linia 5. napis znak równości apostrof To jest napis 1 apostrof.
Linia 6. print otwórz nawias okrągły napis zamknij nawias okrągły.
Linia 7. kratka wypisze dwukropek To jest napis 1.
Linia 9. napis znak równości cudzysłów A to inny sposób zapisu cudzysłów.
Linia 10. print otwórz nawias okrągły napis zamknij nawias okrągły.
Linia 11. kratka wypisze dwukropek A to inny sposób zapisu.
Linia 13. kratka Powyższe dwa zapisy są równoważne przecinek natomiast.
Linia 14. kratka wielolinijkowy napis możemy zapisać przy użyciu.
Linia 15. kratka potrójnych cudzysłowów lub potrójnych apostrofów.
Linia 16. napis znak równości apostrof apostrof apostrof.
Linia 17. A to jest napis przecinek.
Linia 18. który składa się z kilku linijek.
Linia 19. apostrof apostrof apostrof.
Linia 20. print otwórz nawias okrągły napis zamknij nawias okrągły.
Linia 22. kratka wypisze dwukropek A to jest napis przecinek.
Linia 23. kratka który składa się z kilku linijek.
Linia 25. napis znak równości cudzysłów I znaki specjalne przecinek np kropka tabulator lewy ukośnik t lub nowa linijka lewy ukośnik n tekstu kropka cudzysłów.
Linia 26. print otwórz nawias okrągły napis zamknij nawias okrągły.
Linia 27. kratka wypisze dwukropek I znaki specjalne przecinek np kropka tabulator lub nowa linijka.
Linia 28. kratka tekstu kropka.
Do sprawdzenia długości tekstu w języku Python służy funkcja len():
Linia 1. dlugosc znak równości len otwórz nawias okrągły napis zamknij nawias okrągły.
Linia 2. print otwórz nawias okrągły dlugosc zamknij nawias okrągły.
Obiekt typu string w języku Python jest niezmiennąniezmiennaniezmienną sekwencją. Do poszczególnych znaków możemy się odwołać za pomocą indeksu.
1
Przykład 1
Przeanalizujmy zdanie: „Jeśli rozwiązanie jest łatwe do wyjaśnienia, to możliwe, że jest ono dobrym rozwiązaniem” (sentencja to fragment ZEN języka PythonZEN języka PythonZEN języka Python tłumaczonego na język polski). Całe zdanie możemy potraktować jako ciąg pojedynczych znaków i odwoływać się do konkretnych elementów, podając ich indeksy (indeks pierwszego znaku wynosi 0).
Linia 1. napis znak równości cudzysłów Jeśli rozwiązanie jest łatwe do wyjaśnienia przecinek to możliwe przecinek że jest ono dobrym rozwiązaniem kropka cudzysłów.
Linia 3. print otwórz nawias okrągły napis otwórz nawias kwadratowy 0 zamknij nawias kwadratowy zamknij nawias okrągły.
Linia 4. kratka wypisze dwukropek J.
Linia 6. print otwórz nawias okrągły napis otwórz nawias kwadratowy 15 zamknij nawias kwadratowy zamknij nawias okrągły.
Linia 7. kratka wypisze dwukropek i.
Linia 9. print otwórz nawias okrągły napis otwórz nawias kwadratowy 18 zamknij nawias kwadratowy zamknij nawias okrągły.
Linia 10. kratka wypisze dwukropek j.
Możemy również odwołać się do części napisu, używając wyrażeń indeksującychwyrażenie indeksującewyrażeń indeksujących. Pozwala to tworzyć kod działający podobnie jak pętla, ale łatwiejszy do zapisania.
Oto zapis z wykorzystaniem pętli:
Linia 1. for i in range otwórz nawias okrągły 18 przecinek 29 zamknij nawias okrągły dwukropek.
Linia 2. kratka end minus ciąg znaków kończący dane wywołanie print otwórz nawias okrągły zamknij nawias okrągły przecinek.
Linia 3. kratka domyślnie znak nowej linii apostrof lewy ukośnik n apostrof kropka.
Linia 4. print otwórz nawias okrągły napis otwórz nawias kwadratowy i zamknij nawias kwadratowy przecinek end znak równości apostrof apostrof zamknij nawias okrągły.
Linia 5. kratka wypisze dwukropek jest łatwe.
Identyczny efekt uzyskamy z użyciem wyrażenia indeksującego:
Linia 1. print otwórz nawias okrągły napis otwórz nawias kwadratowy 18 dwukropek 29 zamknij nawias kwadratowy zamknij nawias okrągły.
Linia 2. kratka wypisze dwukropek jest łatwe.
Inne przykłady użycia wyrażeń indeksujących:
Linia 1. napis znak równości cudzysłów Ala ma kota cudzysłów.
Linia 3. kratka pominięcie pierwszego indeksu sprawia przecinek że wycinanie zaczynamy od pierwszego elementu.
Linia 4. imie znak równości napis otwórz nawias kwadratowy dwukropek 3 zamknij nawias kwadratowy.
Linia 5. kratka wypisze dwukropek Ala.
Linia 6. print otwórz nawias okrągły imie zamknij nawias okrągły.
Linia 8. kratka pominięcie drugiego indeksu sprawia przecinek że wycinanie kończymy na ostatnim elemencie.
Linia 9. zwierze znak równości napis otwórz nawias kwadratowy 7 dwukropek zamknij nawias kwadratowy.
Linia 10. kratka wypisze dwukropek kota.
Linia 11. print otwórz nawias okrągły zwierze zamknij nawias okrągły.
Linia 13. czasownik znak równości napis otwórz nawias kwadratowy 4 dwukropek 6 zamknij nawias kwadratowy.
Linia 14. kratka wypisze dwukropek ma.
Linia 15. print otwórz nawias okrągły czasownik zamknij nawias okrągły.
Ważne!
W ciągach znaków można odwoływać się do konkretnego elementu (podobnie jak w przypadku listy), ale nie da się zmieniać poszczególnych elementów – język Python zgłosi w takim przypadku błąd: TypeError: 'str' object does not support item assignment.
Oto przykład błędnego polecenia:
Linia 1. napis znak równości cudzysłów Python jest ciekawy cudzysłów.
Linia 3. napis otwórz nawias kwadratowy 4 zamknij nawias kwadratowy znak równości cudzysłów X cudzysłów.
Linia 4. kratka zgłosi błąd dwukropek.
Linia 5. kratka Traceback otwórz nawias okrągły most recent call last zamknij nawias okrągły dwukropek.
Linia 6. kratka File cudzysłów otwórz nawias ostrokątny pyshell kratka 7 zamknij nawias ostrokątny cudzysłów przecinek line 1 przecinek in otwórz nawias ostrokątny module zamknij nawias ostrokątny.
Linia 7. kratka napis otwórz nawias kwadratowy 4 zamknij nawias kwadratowy znak równości cudzysłów X cudzysłów.
Linia 8. kratka TypeError dwukropek apostrof str apostrof object does not support item assignment.
Dla zainteresowanych
Stosowanie wyrażeń indeksujących należy do tzw. pythonizmówpythonizmpythonizmów. Warto je znać – pozwalają one uprościć tworzony program. Umiejętność działań na wycinkach (slicerach) przydaje się podczas operacji na tekstach. Wyrażenia umożliwiają zapisanie wspak podanego ciągu znaków. Przedstawiona poniżej instrukcja print oznacza: odczytuj napis od znaku ostatniego do pierwszego (czytaj cały tekst, zmniejszając indeksy, czyli od końca do początku).
Linia 1. napis znak równości cudzysłów Ala ma kota przecinek a Python węża cudzysłów.
Linia 2. print otwórz nawias okrągły napis otwórz nawias kwadratowy dwukropek dwukropek minus 1 zamknij nawias kwadratowy zamknij nawias okrągły.
Linia 3. kratka wypisze dwukropek ażęw nohtyP a przecinek atok am alA.
Działania na ciągach znaków: dodawanie i mnożenie
Oczywiście nie da się mnożyć tekstu przez tekst (przykładowo: 'Adam' * 'Linux'). Możliwe jest natomiast mnożenie obiektów klasy str przez liczby typu int oraz dodawanie napisów do siebie.
Operacja
Dozwolona
Przykład
Dodawanie str + str
TAK
'Adam ' + 'programista.' -> 'Adam programista.'
Mnożenie str * str
NIE
'Adam' * 'Python' -> TypeError
Mnożenie str * int
TAK
4 * 'Python-' -> 'Python‑Python‑Python‑Python-'
Przykład operacji dodawania:
Linia 1. napis podkreślnik 1 znak równości apostrof Adam apostrof.
Linia 2. napis podkreślnik 2 znak równości apostrof to programista apostrof.
Linia 3. napis podkreślnik 3 znak równości apostrof Pythona apostrof.
Linia 4. napis znak równości napis podkreślnik 1 plus apostrof apostrof plus napis podkreślnik 2 plus apostrof apostrof plus napis podkreślnik 3.
Linia 5. print otwórz nawias okrągły napis zamknij nawias okrągły.
Linia 6. kratka wypisze dwukropek Adam to programista Pythona.
Operacja mnożenia:
Linia 1. napis znak równości 4 asterysk apostrof Python minus apostrof.
Linia 2. print otwórz nawias okrągły napis zamknij nawias okrągły.
Linia 3. kratka wypisze dwukropek Python‑Python‑Python‑Python minus.
1
Polecenie 1
Przygotujmy funkcję, która będzie tworzyła prostokąt o podanych wymiarach, wypełniony znakami – przykładowo: prostokat(x, y, znak).
Specyfikacja problemu:
Dane:
x – szerokość tworzonego prostokąta; liczba naturalna dodatnia
y – wysokość tworzonego prostokąta; liczba naturalna dodatnia
znak – litera, z której będzie tworzony prostokąt; znak
Wynik:
Program wypisuje stworzony ze znaków znak prostokąt o zadanych wymiarach.
Linia 1. def prostokat otwórz nawias okrągły x przecinek y przecinek znak zamknij nawias okrągły dwukropek.
Linia 2. for i in range otwórz nawias okrągły y zamknij nawias okrągły dwukropek.
Linia 3. print otwórz nawias okrągły x asterysk znak zamknij nawias okrągły.
Linia 5. prostokat otwórz nawias okrągły 3 przecinek 4 przecinek apostrof kratka apostrof zamknij nawias okrągły.
Linia 6. kratka wypisze.
Linia 7. kratka kratka kratka.
Linia 8. kratka kratka kratka.
Linia 9. kratka kratka kratka.
Linia 10. kratka kratka kratka.
Dla zainteresowanych
W klasie str dostępna jest metoda center(). Pozwala ona osiągnąć interesujące efekty podczas pracy z tekstami. Przykładowo: polecenie ' + '.center(15,'$') da wynik: '$$$$$$ + $$$$$$' – ustawi dany ciąg znaków na środku, tak aby łączna długość wynikowego ciągu znaków wynosiła 15, a puste miejsca uzupełni znakiem $.
Wszystkie metody klasy str możemy poznać, wydając polecenie dir():
Przejdźmy do kodowania. Możemy do tego celu wykorzystywać poznane właśnie elementy języka Python. Napiszemy dwie funkcje - pierwsza zamieni podany jej tekst w ciąg kodów ASCII, odpowiadających poszczególnym znakom, a druga wykona operację odwrotną, czyli zamieni ciąg kodów ASCII w tekst składający się ze znaków odpowiadających kolejnym kodom.
Przykładową implementację i efekty działania funkcji prezentuje następujący kod:
Linia 1. def zakoduj podkreślnik napis otwórz nawias okrągły tekst zamknij nawias okrągły dwukropek.
Linia 2. kratka tekst minus zawiera aktualnie kodowany napis średnik.
Linia 3. kratka kod minus przechowuje listę z kodami ASCII przecinek.
Linia 4. kratka odpowiadającą aktualnie kodowanemu tekstowi kropka.
Linia 5. kod znak równości otwórz nawias kwadratowy zamknij nawias kwadratowy.
Linia 6. for litera in tekst dwukropek.
Linia 7. kod kropka append otwórz nawias okrągły ord otwórz nawias okrągły litera zamknij nawias okrągły zamknij nawias okrągły.
Linia 9. return kod.
Linia 11. def dekoduj podkreślnik napis otwórz nawias okrągły kodowany zamknij nawias okrągły dwukropek.
Linia 12. kratka kodowany minus lista z kodami ASCII.
Linia 13. kratka znaków zakodowanego słowa średnik.
Linia 14. kratka napis minus zawiera odkodowane znaki odpowiadające kolejnym.
Linia 15. kratka kodom ASCII przecinek z prefiksem apostrof Odkodowany dwukropek apostrof kropka.
Linia 16. napis znak równości apostrof Odkodowany dwukropek apostrof.
Linia 17. for znak in kodowany dwukropek.
Linia 18. napis plus znak równości chr otwórz nawias okrągły znak zamknij nawias okrągły.
Linia 20. return napis.
Linia 23. zakodowany znak równości zakoduj podkreślnik napis otwórz nawias okrągły apostrof Adam minus zamknij nawias ostrokątny programista apostrof zamknij nawias okrągły.
Linia 24. print otwórz nawias okrągły zakodowany zamknij nawias okrągły.
Linia 25. kratka wypisze dwukropek otwórz nawias kwadratowy 65 przecinek 100 przecinek 97 przecinek 109 przecinek 32 przecinek 45 przecinek 62 przecinek 32 przecinek 112 przecinek 114 przecinek 111 przecinek.
Linia 26. kratka 103 przecinek 114 przecinek 97 przecinek 109 przecinek 105 przecinek 115 przecinek 116 przecinek 97 zamknij nawias kwadratowy.
Linia 28. tekst znak równości dekoduj podkreślnik napis otwórz nawias okrągły zakodowany zamknij nawias okrągły.
Linia 29. print otwórz nawias okrągły tekst zamknij nawias okrągły.
Linia 30. kratka wypisze dwukropek Odkodowany dwukropek Adam minus zamknij nawias ostrokątny programista.
Polecenie 2
Napisz program odkodowujący tajny tekst zapisany za pomocą kodów ASCII. Dzięki temu odczytasz ciekawostkę (m.in. na temat oprogramowania FLOSSFLOSSoprogramowania FLOSS).
tajny – wiadomość zakodowana za pomocą kodów ASCII; tablica liczb naturalnych
Wynik:
Program wypisuje odkodowaną wiadomość.
Linia 1. tajny znak równości otwórz nawias kwadratowy 76 przecinek 105 przecinek 110 przecinek 117 przecinek 120 przecinek 32 przecinek 116 przecinek 111 przecinek 32 przecinek 99 przecinek 105 przecinek.
Linia 2. 101 przecinek 107 przecinek 97 przecinek 119 przecinek 121 przecinek 32 przecinek 115 przecinek 121 przecinek 115 przecinek 116 przecinek.
Linia 3. 101 przecinek 109 przecinek 32 przecinek 111 przecinek 112 przecinek 101 przecinek 114 przecinek 97 przecinek 99 przecinek 121 przecinek.
Linia 4. 106 przecinek 110 przecinek 121 przecinek 32 przecinek 45 przecinek 32 przecinek 70 przecinek 76 przecinek 79 przecinek 83 przecinek 83 zamknij nawias kwadratowy.
Linia 6. odkodowana podkreślnik wiadomosc znak równości apostrof apostrof.
Linia 7. for znak in tajny dwukropek.
Linia 8. odkodowana podkreślnik wiadomosc plus znak równości chr otwórz nawias okrągły znak zamknij nawias okrągły.
Linia 10. print otwórz nawias okrągły odkodowana podkreślnik wiadomosc zamknij nawias okrągły.
Linia 11. kratka wypisze dwukropek Linux to ciekawy system operacyjny minus FLOSS.
Operacje na dłuższych tekstach
Wykonajmy kilka operacji na fragmencie dokumentu zawierającego wiele zdań. Jako przykład posłuży nam zbiór felietonów Tadeusza Boya-Żeleńskiego pt. Dziewice konsystorskie (dostępny w domenie publicznej).
Oto wybrany fragment:
Linia 1. Co innego jest propagować coś przecinek a co innego widzieć przecinek że coś jest faktem przecinek że coś się dzieje i jak się dzieje średnik widzieć nierówność przecinek widzieć krzywdę przecinek widzieć nieszczęście przecinek widzieć fałsz przecinek nieuczciwość przecinek widzieć bezduszność przecinek zaciekłość i ślepotę tych przecinek którzy powinni mieć cudzysłów oczy ku patrzeniu i uszy ku słyszeniu cudzysłów kropka.
Linia 2. Mówić o tym minus w potrzebie nawet krzyczeć minus jest obowiązkiem pisarza kropka Bo literatura jest sejmem narodu średnik ważniejszym może od tego przecinek który tam w zacisznym półkolu wymyśla sobie wzajem przy ulicy Wiejskiej kropka Przez nią uświadamiają się potrzeby i zjawiska chwili średnik przez nią przychodzą do głosu żądania i krzywdy ludzkie kropka Pisarz przecinek który by wciąż nie przykładał ucha do ziemi przecinek aby wyczuwać jej tajemne drżenie przecinek aby nadsłuchiwać tętentu przyszłości przecinek źle spełniałby swoje zadanie kropka I nie powinien w żadnym wypadku liczyć się z głosami oburzeń — choćby skądinąd szanownymi — nawet kiedy chodzi o tak zwaną asterysk moralność asterysk przecinek o tak zwany asterysk porządek społeczny asterysk kropka Popatrzmy na historię instytucji i wierzeń ludzkich kropka Trzeba by chyba być ślepym lub kłamcą przecinek aby nie uznać przecinek że porządek społeczny przecinek że cudzysłów moralność cudzysłów przecinek to coś przecinek co zmienia się i musi zmieniać ciągle średnik coś przecinek co przechodzi ciągłą ewolucję kropka Dzisiejszy bunt jest jutrzejszym prawem średnik dzisiejsze bluźnierstwo jutrzejszym komunałem kropka W imię porządku społecznego palono na stosie ludzi przecinek których dziś wysyła się jako media na kongresy metapsychiczne kropka Mordowano się w imię Boga o wierzenia przecinek które zgodnie dziś żyją obok siebie kropka Był czas przecinek gdy torturowano obwinionych przecinek aby wydobyć z nich zeznania kropka Był czas przecinek gdy trzymano obłąkanych w lochu i w kajdanach kropka Był czas więzienia za długi przecinek kiedy niewypłacalnego dłużnika więziono dożywotnio i żywiono na koszt państwa kropka Wszystko to przecinek i wiele innych równie pięknych rzeczy było asterysk porządkiem społecznym asterysk średnik ktokolwiek przeciw nim działał przecinek był wrogiem porządku społecznego kropka Czy wyobraża kto sobie przecinek że wiele z dzisiejszych cudzysłów porządków cudzysłów nie będzie się przedstawiać naszym wnukom tak samo przecinek jak nam tamte dziwolągi średnik że nie będą się nam dziwili przecinek że nie będą się litowali nad nami znak zapytania.
W kolejnych e‑materiałach dowiesz się, jak zapisać i wczytać tekst z pliku – teraz natomiast zapiszemy cały tekst w jednej zmiennej, z użyciem notacji pozwalającej na definiowanie napisów wielolinijkowych:
Linia 1. dane znak równości cudzysłów cudzysłów cudzysłów Co innego jest propagować coś przecinek a co innego widzieć przecinek że coś jest faktem przecinek że coś się dzieje i jak się dzieje średnik widzieć nierówność przecinek widzieć krzywdę przecinek widzieć nieszczęście przecinek widzieć fałsz przecinek nieuczciwość przecinek widzieć bezduszność przecinek zaciekłość i ślepotę tych przecinek którzy powinni mieć cudzysłów oczy ku patrzeniu i uszy ku słyszeniu cudzysłów kropka.
Linia 2. Mówić o tym minus w potrzebie nawet krzyczeć minus jest obowiązkiem pisarza kropka Bo literatura jest sejmem narodu średnik ważniejszym może od tego przecinek który tam w zacisznym półkolu wymyśla sobie wzajem przy ulicy Wiejskiej kropka Przez nią uświadamiają się potrzeby i zjawiska chwili średnik przez nią przychodzą do głosu żądania i krzywdy ludzkie kropka Pisarz przecinek który by wciąż nie przykładał ucha do ziemi przecinek aby wyczuwać jej tajemne drżenie przecinek aby nadsłuchiwać tętentu przyszłości przecinek źle spełniałby swoje zadanie kropka I nie powinien w żadnym wypadku liczyć się z głosami oburzeń — choćby skądinąd szanownymi — nawet kiedy chodzi o tak zwaną asterysk moralność asterysk przecinek o tak zwany asterysk porządek społeczny asterysk kropka Popatrzmy na historię instytucji i wierzeń ludzkich kropka Trzeba by chyba być ślepym lub kłamcą przecinek aby nie uznać przecinek że porządek społeczny przecinek że cudzysłów moralność cudzysłów przecinek to coś przecinek co zmienia się i musi zmieniać ciągle średnik coś przecinek co przechodzi ciągłą ewolucję kropka Dzisiejszy bunt jest jutrzejszym prawem średnik dzisiejsze bluźnierstwo jutrzejszym komunałem kropka W imię porządku społecznego palono na stosie ludzi przecinek których dziś wysyła się jako media na kongresy metapsychiczne kropka Mordowano się w imię Boga o wierzenia przecinek które zgodnie dziś żyją obok siebie kropka Był czas przecinek gdy torturowano obwinionych przecinek aby wydobyć z nich zeznania kropka Był czas przecinek gdy trzymano obłąkanych w lochu i w kajdanach kropka Był czas więzienia za długi przecinek kiedy niewypłacalnego dłużnika więziono dożywotnio i żywiono na koszt państwa kropka Wszystko to przecinek i wiele innych równie pięknych rzeczy było asterysk porządkiem społecznym asterysk średnik ktokolwiek przeciw nim działał przecinek był wrogiem porządku społecznego kropka Czy wyobraża kto sobie przecinek że wiele z dzisiejszych cudzysłów porządków cudzysłów nie będzie się przedstawiać naszym wnukom tak samo przecinek jak nam tamte dziwolągi średnik że nie będą się nam dziwili przecinek że nie będą się litowali nad nami znak zapytania cudzysłów cudzysłów cudzysłów.
Ujęcie tekstu w znaki trzech cudzysłowów (lub trzech apostrofów) powoduje, że wszystkie znaki – włącznie ze znakami nowej linii – zostają zapisane do zmiennej dane. Możemy podzielić tekst na listę za pomocą metody split(). Konwertujemy wtedy tekst na listę, której elementami są łańcuchy znaków zawierające poszczególne linie.
Linia 1. lista podkreślnik z podkreślnik danymi znak równości dane kropka split otwórz nawias okrągły cudzysłów lewy ukośnik n cudzysłów zamknij nawias okrągły.
Linia 3. for i in range otwórz nawias okrągły len otwórz nawias okrągły lista podkreślnik z podkreślnik danymi zamknij nawias okrągły zamknij nawias okrągły dwukropek.
Linia 4. print otwórz nawias okrągły lista podkreślnik z podkreślnik danymi otwórz nawias kwadratowy i zamknij nawias kwadratowy zamknij nawias okrągły.
Funkcje count() i find()
W rozwiązaniu kolejnego problemu użyjemy dwóch ważnych funkcji: count() i find().
Pierwsza z nich: count() służy do zliczania wystąpień danego wzorca w tekście. Jeżeli wzorzec nie występuje, zwraca ona wartość 0.
Funkcja find() wyszukuje wzorzec w tekście i zwraca pozycję jego pierwszego wystąpienia. Funkcja zwraca wartość -1, jeżeli wzorzec nie występuje w tekście.
Polecenie 3
Znajdźmy odpowiedzi na następujące pytania:
Z ilu zdań składa się tekst? Dowiemy się tego, licząc kropki, wykrzykniki i znaki zapytania; wykorzystamy metodę count().
Ile spacji zawiera tekst? Aby to sprawdzić, ponownie użyjemy metody count().
Ile słów „się” znajdziemy w tekście? Tu znów sięgniemy po metodę count().
Na której pozycji zapisano pierwsze słowo „się”? By się tego dowiedzieć, skorzystamy z metody find().
Na początku wczytamy dane. Użyjemy tego samego fragmentu tekstu, co wcześniej.
Linia 1. dane znak równości cudzysłów cudzysłów cudzysłów Co innego jest propagować coś przecinek a co innego widzieć przecinek że coś jest faktem przecinek że coś się dzieje i jak się dzieje średnik widzieć nierówność przecinek widzieć krzywdę przecinek widzieć nieszczęście przecinek widzieć fałsz przecinek nieuczciwość przecinek widzieć bezduszność przecinek zaciekłość i ślepotę tych przecinek którzy powinni mieć cudzysłów oczy ku patrzeniu i uszy ku słyszeniu cudzysłów kropka.
Linia 2. Mówić o tym minus w potrzebie nawet krzyczeć minus jest obowiązkiem pisarza kropka Bo literatura jest sejmem narodu średnik ważniejszym może od tego przecinek który tam w zacisznym półkolu wymyśla sobie wzajem przy ulicy Wiejskiej kropka Przez nią uświadamiają się potrzeby i zjawiska chwili średnik przez nią przychodzą do głosu żądania i krzywdy ludzkie kropka Pisarz przecinek który by wciąż nie przykładał ucha do ziemi przecinek aby wyczuwać jej tajemne drżenie przecinek aby nadsłuchiwać tętentu przyszłości przecinek źle spełniałby swoje zadanie kropka I nie powinien w żadnym wypadku liczyć się z głosami oburzeń — choćby skądinąd szanownymi — nawet kiedy chodzi o tak zwaną asterysk moralność asterysk przecinek o tak zwany asterysk porządek społeczny asterysk kropka Popatrzmy na historię instytucji i wierzeń ludzkich kropka Trzeba by chyba być ślepym lub kłamcą przecinek aby nie uznać przecinek że porządek społeczny przecinek że cudzysłów moralność cudzysłów przecinek to coś przecinek co zmienia się i musi zmieniać ciągle średnik coś przecinek co przechodzi ciągłą ewolucję kropka Dzisiejszy bunt jest jutrzejszym prawem średnik dzisiejsze bluźnierstwo jutrzejszym komunałem kropka W imię porządku społecznego palono na stosie ludzi przecinek których dziś wysyła się jako media na kongresy metapsychiczne kropka Mordowano się w imię Boga o wierzenia przecinek które zgodnie dziś żyją obok siebie kropka Był czas przecinek gdy torturowano obwinionych przecinek aby wydobyć z nich zeznania kropka Był czas przecinek gdy trzymano obłąkanych w lochu i w kajdanach kropka Był czas więzienia za długi przecinek kiedy niewypłacalnego dłużnika więziono dożywotnio i żywiono na koszt państwa kropka Wszystko to przecinek i wiele innych równie pięknych rzeczy było asterysk porządkiem społecznym asterysk średnik ktokolwiek przeciw nim działał przecinek był wrogiem porządku społecznego kropka Czy wyobraża kto sobie przecinek że wiele z dzisiejszych cudzysłów porządków cudzysłów nie będzie się przedstawiać naszym wnukom tak samo przecinek jak nam tamte dziwolągi średnik że nie będą się nam dziwili przecinek że nie będą się litowali nad nami znak zapytania cudzysłów cudzysłów cudzysłów.
Linia 4. ile znak równości dane kropka count otwórz nawias okrągły apostrof kropka apostrof zamknij nawias okrągły plus dane kropka count otwórz nawias okrągły apostrof wykrzyknik apostrof zamknij nawias okrągły plus dane kropka count otwórz nawias okrągły apostrof znak zapytania apostrof zamknij nawias okrągły.
Linia 5. print otwórz nawias okrągły ile zamknij nawias okrągły.
Linia 6. kratka wypisze dwukropek 16.
Linia 8. ile znak równości dane kropka count otwórz nawias okrągły apostrof apostrof zamknij nawias okrągły.
Linia 9. print otwórz nawias okrągły ile zamknij nawias okrągły.
Linia 10. kratka wypisze dwukropek 306.
Linia 12. ile znak równości dane kropka count otwórz nawias okrągły apostrof się apostrof zamknij nawias okrągły.
Linia 13. print otwórz nawias okrągły ile zamknij nawias okrągły.
Linia 14. kratka wypisze dwukropek 10.
Linia 16. gdzie znak równości dane kropka find otwórz nawias okrągły apostrof się apostrof zamknij nawias okrągły.
Linia 17. print otwórz nawias okrągły gdzie zamknij nawias okrągły.
Linia 18. kratka wypisze dwukropek 79.
Polecenie 4
Przykładowy tekst należy przekształcić w:
ciąg złożony z co piątego znaku, zaczynając od pierwszego znaku w tekście;
tekst, w którym słowa „się” zostaną zamienione na „XXX”, a „kiedy” na „ZZZZ”.
Linia 1. dane znak równości cudzysłów cudzysłów cudzysłów Co innego jest propagować coś przecinek a co innego widzieć przecinek że coś jest faktem przecinek że coś się dzieje i jak się dzieje średnik widzieć nierówność przecinek widzieć krzywdę przecinek widzieć nieszczęście przecinek widzieć fałsz przecinek nieuczciwość przecinek widzieć bezduszność przecinek zaciekłość i ślepotę tych przecinek którzy powinni mieć cudzysłów oczy ku patrzeniu i uszy ku słyszeniu cudzysłów kropka.
Linia 2. Mówić o tym minus w potrzebie nawet krzyczeć minus jest obowiązkiem pisarza kropka Bo literatura jest sejmem narodu średnik ważniejszym może od tego przecinek który tam w zacisznym półkolu wymyśla sobie wzajem przy ulicy Wiejskiej kropka Przez nią uświadamiają się potrzeby i zjawiska chwili średnik przez nią przychodzą do głosu żądania i krzywdy ludzkie kropka Pisarz przecinek który by wciąż nie przykładał ucha do ziemi przecinek aby wyczuwać jej tajemne drżenie przecinek aby nadsłuchiwać tętentu przyszłości przecinek źle spełniałby swoje zadanie kropka I nie powinien w żadnym wypadku liczyć się z głosami oburzeń — choćby skądinąd szanownymi — nawet kiedy chodzi o tak zwaną asterysk moralność asterysk przecinek o tak zwany asterysk porządek społeczny asterysk kropka Popatrzmy na historię instytucji i wierzeń ludzkich kropka Trzeba by chyba być ślepym lub kłamcą przecinek aby nie uznać przecinek że porządek społeczny przecinek że cudzysłów moralność cudzysłów przecinek to coś przecinek co zmienia się i musi zmieniać ciągle średnik coś przecinek co przechodzi ciągłą ewolucję kropka Dzisiejszy bunt jest jutrzejszym prawem średnik dzisiejsze bluźnierstwo jutrzejszym komunałem kropka W imię porządku społecznego palono na stosie ludzi przecinek których dziś wysyła się jako media na kongresy metapsychiczne kropka Mordowano się w imię Boga o wierzenia przecinek które zgodnie dziś żyją obok siebie kropka Był czas przecinek gdy torturowano obwinionych przecinek aby wydobyć z nich zeznania kropka Był czas przecinek gdy trzymano obłąkanych w lochu i w kajdanach kropka Był czas więzienia za długi przecinek kiedy niewypłacalnego dłużnika więziono dożywotnio i żywiono na koszt państwa kropka Wszystko to przecinek i wiele innych równie pięknych rzeczy było asterysk porządkiem społecznym asterysk średnik ktokolwiek przeciw nim działał przecinek był wrogiem porządku społecznego kropka Czy wyobraża kto sobie przecinek że wiele z dzisiejszych cudzysłów porządków cudzysłów nie będzie się przedstawiać naszym wnukom tak samo przecinek jak nam tamte dziwolągi średnik że nie będą się nam dziwili przecinek że nie będą się litowali nad nami znak zapytania cudzysłów cudzysłów cudzysłów.
Linia 4. tekst znak równości dane otwórz nawias kwadratowy dwukropek dwukropek 5 zamknij nawias kwadratowy.
Linia 5. print otwórz nawias okrągły tekst zamknij nawias okrągły.
Linia 6. kratka wypisze dwukropek Cnjpg gd przecinek cea przecinek ciii ded óćd wweeę przecinek zf przecinek uw iez przecinek iśśtct nioktiukyiM m tiwre minus twiia ratma średnik nzodoóazzplm ejrlWk z aaityjkw z cąg n wues yw pł i wwej naacćepziełboaenoeżmalć o z bądnmn yd z ać z z e asterysk pm oit e k b a ybmainżrkły aćo przecinek zięumaą rocąl kropka sznstspmisleorzołWęz eglnol przecinek rdwa akeeyzMws eitziijoe c troiyayćieiyadzoącl kn cwezuk yaoż ido w opwsk przecinek iihniceb asterysk ąmłykl cii przecinek iokon watbże iypd be dia okok ewi bsai przecinek nęiti znak zapytania.
Linia 8. tekst podkreślnik 2 znak równości dane kropka replace otwórz nawias okrągły apostrof się apostrof przecinek apostrof XXX apostrof zamknij nawias okrągły.
Linia 9. tekst podkreślnik 3 znak równości tekst podkreślnik 2 kropka replace otwórz nawias okrągły apostrof kiedy apostrof przecinek apostrof ZZZZ apostrof zamknij nawias okrągły.
Oto zawartość zmiennej tekst_3:
Linia 1. Co innego jest propagować coś przecinek a co innego widzieć przecinek że coś jest faktem przecinek że coś XXX dzieje i jak XXX dzieje średnik widzieć nierówność przecinek widzieć krzywdę przecinek widzieć nieszczęście przecinek widzieć fałsz przecinek nieuczciwość przecinek widzieć bezduszność przecinek zaciekłość i ślepotę tych przecinek którzy powinni mieć cudzysłów oczy ku patrzeniu i uszy ku słyszeniu cudzysłów kropka.
Linia 2. Mówić o tym minus w potrzebie nawet krzyczeć minus jest obowiązkiem pisarza kropka Bo literatura jest sejmem narodu średnik ważniejszym może od tego przecinek który tam w zacisznym półkolu wymyśla sobie wzajem przy ulicy Wiejskiej kropka Przez nią uświadamiają XXX potrzeby i zjawiska chwili średnik przez nią przychodzą do głosu żądania i krzywdy ludzkie kropka Pisarz przecinek który by wciąż nie przykładał ucha do ziemi przecinek aby wyczuwać jej tajemne drżenie przecinek aby nadsłuchiwać tętentu przyszłości przecinek źle spełniałby swoje zadanie kropka I nie powinien w żadnym wypadku liczyć XXX z głosami oburzeń — choćby skądinąd szanownymi — nawet ZZZZ chodzi o tak zwaną asterysk moralność asterysk przecinek o tak zwany asterysk porządek społeczny asterysk kropka Popatrzmy na historię instytucji i wierzeń ludzkich kropka Trzeba by chyba być ślepym lub kłamcą przecinek aby nie uznać przecinek że porządek społeczny przecinek że cudzysłów moralność cudzysłów przecinek to coś przecinek co zmienia XXX i musi zmieniać ciągle średnik coś przecinek co przechodzi ciągłą ewolucję kropka Dzisiejszy bunt jest jutrzejszym prawem średnik dzisiejsze bluźnierstwo jutrzejszym komunałem kropka W imię porządku społecznego palono na stosie ludzi przecinek których dziś wysyła XXX jako media na kongresy metapsychiczne kropka Mordowano XXX w imię Boga o wierzenia przecinek które zgodnie dziś żyją obok siebie kropka Był czas przecinek gdy torturowano obwinionych przecinek aby wydobyć z nich zeznania kropka Był czas przecinek gdy trzymano obłąkanych w lochu i w kajdanach kropka Był czas więzienia za długi przecinek ZZZZ niewypłacalnego dłużnika więziono dożywotnio i żywiono na koszt państwa kropka Wszystko to przecinek i wiele innych równie pięknych rzeczy było asterysk porządkiem społecznym asterysk średnik ktokolwiek przeciw nim działał przecinek był wrogiem porządku społecznego kropka Czy wyobraża kto sobie przecinek że wiele z dzisiejszych cudzysłów porządków cudzysłów nie będzie XXX przedstawiać naszym wnukom tak samo przecinek jak nam tamte dziwolągi średnik że nie będą XXX nam dziwili przecinek że nie będą XXX litowali nad nami znak zapytania.
ASCII ART – sztuka zapomniana
Operując na ciągach znaków, można tworzyć oryginalne napisy. Służy do tego biblioteka ARTARTART, która jest projektem typu Open Source. Kod biblioteki znajdziemy w serwisie GitHub.
Funkcja text2art pozwala na takie przetworzenie łańcucha znaków, że zostaje on wyświetlony w formie graficznej za pomocą innego łańcucha znaków.
Funkcja art natomiast wyświetla graficzną reprezentację łańcucha znaków. Oto przykłady zastosowania:
Linia 1. from art import asterysk.
Linia 3. print otwórz nawias okrągły text2art otwórz nawias okrągły cudzysłów art cudzysłów przecinek cudzysłów block cudzysłów zamknij nawias okrągły zamknij nawias okrągły.
Linia 4. kratka wypisze dwukropek.
Linia 5. kratka kropka minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus kropka kropka minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus kropka kropka minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus kropka.
Linia 6. kratka kreska pionowa kropka minus minus minus minus minus minus minus minus minus minus minus minus minus minus kropka kreska pionowa kreska pionowa kropka minus minus minus minus minus minus minus minus minus minus minus minus minus minus kropka kreska pionowa kreska pionowa kropka minus minus minus minus minus minus minus minus minus minus minus minus minus minus kropka kreska pionowa.
Linia 7. kratka kreska pionowa kreska pionowa podkreślnik podkreślnik kreska pionowa kreska pionowa kreska pionowa kreska pionowa podkreślnik podkreślnik podkreślnik podkreślnik podkreślnik podkreślnik podkreślnik kreska pionowa kreska pionowa kreska pionowa kreska pionowa podkreślnik podkreślnik podkreślnik podkreślnik podkreślnik podkreślnik podkreślnik podkreślnik podkreślnik kreska pionowa kreska pionowa.
Linia 8. kratka kreska pionowa kreska pionowa prawy ukośnik lewy ukośnik kreska pionowa kreska pionowa kreska pionowa kreska pionowa kreska pionowa podkreślnik podkreślnik podkreślnik lewy ukośnik kreska pionowa kreska pionowa kreska pionowa kreska pionowa kreska pionowa podkreślnik podkreślnik kreska pionowa kreska pionowa kreska pionowa.
Linia 9. kratka kreska pionowa kreska pionowa prawy ukośnik prawy ukośnik lewy ukośnik lewy ukośnik kreska pionowa kreska pionowa kreska pionowa kreska pionowa kreska pionowa kreska pionowa podkreślnik podkreślnik zamknij nawias okrągły kreska pionowa kreska pionowa kreska pionowa kreska pionowa kreska pionowa kreska pionowa podkreślnik prawy ukośnik kreska pionowa kreska pionowa lewy ukośnik podkreślnik kreska pionowa kreska pionowa kreska pionowa.
Linia 10. kratka kreska pionowa kreska pionowa prawy ukośnik podkreślnik podkreślnik podkreślnik podkreślnik lewy ukośnik kreska pionowa kreska pionowa kreska pionowa kreska pionowa kreska pionowa podkreślnik podkreślnik prawy ukośnik kreska pionowa kreska pionowa kreska pionowa kreska pionowa kreska pionowa kreska pionowa kreska pionowa kreska pionowa.
Linia 11. kratka kreska pionowa kreska pionowa podkreślnik prawy ukośnik prawy ukośnik lewy ukośnik lewy ukośnik podkreślnik kreska pionowa kreska pionowa kreska pionowa kreska pionowa podkreślnik kreska pionowa kreska pionowa lewy ukośnik lewy ukośnik podkreślnik kreska pionowa kreska pionowa kreska pionowa kreska pionowa podkreślnik kreska pionowa kreska pionowa podkreślnik kreska pionowa kreska pionowa.
Linia 12. kratka kreska pionowa kreska pionowa kreska pionowa podkreślnik podkreślnik podkreślnik podkreślnik kreska pionowa kreska pionowa podkreślnik podkreślnik podkreślnik podkreślnik kreska pionowa kreska pionowa kreska pionowa kreska pionowa kreska pionowa kreska pionowa podkreślnik podkreślnik podkreślnik podkreślnik kreska pionowa kreska pionowa podkreślnik podkreślnik podkreślnik kreska pionowa kreska pionowa kreska pionowa kreska pionowa kreska pionowa kreska pionowa podkreślnik podkreślnik podkreślnik podkreślnik podkreślnik kreska pionowa kreska pionowa kreska pionowa.
Linia 13. kratka kreska pionowa kreska pionowa kreska pionowa kreska pionowa kreska pionowa kreska pionowa kreska pionowa kreska pionowa kreska pionowa kreska pionowa kreska pionowa kreska pionowa.
Linia 14. kratka kreska pionowa apostrof minus minus minus minus minus minus minus minus minus minus minus minus minus minus apostrof kreska pionowa kreska pionowa apostrof minus minus minus minus minus minus minus minus minus minus minus minus minus minus apostrof kreska pionowa kreska pionowa apostrof minus minus minus minus minus minus minus minus minus minus minus minus minus minus apostrof kreska pionowa.
Linia 15. kratka apostrof minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus apostrof apostrof minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus apostrof apostrof minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus apostrof.
Linia 17. print otwórz nawias okrągły art otwórz nawias okrągły cudzysłów men cudzysłów zamknij nawias okrągły zamknij nawias okrągły.
Linia 18. kratka wypisze dwukropek.
Linia 19. kratka ب podkreślnik ب.
Linia 21. print otwórz nawias okrągły art otwórz nawias okrągły cudzysłów woman cudzysłów zamknij nawias okrągły zamknij nawias okrągły.
Linia 22. kratka wypisze dwukropek.
Linia 23. kratka ▓⚗ podkreślnik ⚗▓.
Linia 25. print otwórz nawias okrągły art otwórz nawias okrągły cudzysłów car cudzysłów zamknij nawias okrągły zamknij nawias okrągły.
Linia 26. kratka wypisze dwukropek.
Linia 27. kratka `o kratka kratka o zamknij nawias ostrokątny.
Dla zainteresowanych
W roku Paulina Piotrowska, studentka Akademii Sztuk Pięknych w Gdańsku, napisała pracę magisterską zatytułowaną „ASCII ART” (nr albumu 4836).
We wstępie czytamy:
Paulina PiotrowskaASCII ART
ASCII Art, według mnie pierwsza i jedyna najbardziej skomputeryzowana forma przedstawienia grafiki w formie cyfrowej. Tworzona za pomocą pierwotnego narzędzia, jakiego używa współczesny grafik komputerowy – klawiatury. Dodatkowo tworzona w najbardziej podstawowym programie, którego używają programiści – edytorze tekstu.
paulina Źródło: Paulina Piotrowska, ASCII ART, 2009, dostępny w internecie: archive.org [dostęp 7.04.2021].
Już wiesz
Podsumujmy najważniejsze elementy tego e‑materiału:
Ciągi znaków w języku Python są obiektami klasy str, a składają się ze znaków ASCII.
Ciągi znaków są niezmiennymi sekwencjami.
Ciągi znaków możemy przetwarzać, stosując metody takie jak split(), count() czy find().
Słownik
ART
ART
moduł służący do graficznego przedstawienia napisu złożonego ze znaków ASCII; należy go zainstalować, korzystając z komendy pip install art
ASCII
ASCII
(ang. American Standard Code for Information Interchange) system kodowania znaków, pierwotnie oparty na 7 bitach (współcześnie rozszerzony)
FLOSS
FLOSS
(ang. Free/Libre and Open Source Software – wolne oprogramowanie i otwarty kod źródłowy) programy, które są dostępne dla każdego zgodnie z zasadami przedstawionymi na stronie projektu GNU
niezmienna
niezmienna
(ang. immutable) sekwencja, której pojedynczych elementów nie da się zmodyfikować; w celu dokonania zmiany konieczne jest zastąpienie całego obiektu nowym (niezbędna jest wymiana całego ciągu, aby zastąpić w nim pojedynczy znak)
pythonizm
pythonizm
specyficzna dla języka Python konstrukcja programistyczna, pozwalająca na tworzenie krótkiego kodu
wyrażenie indeksujące
wyrażenie indeksujące
(ang. slice) zawarte w nawiasach kwadratowych wyrażenie, które pozwala określić wybraną część sekwencji; może mieć ono postać [a:b] lub [a] lub podobną; nazywane także wycinkiem
ZEN języka Python
ZEN języka Python
manifest ZEN of Python by Tim Peters - dokument składający się z 19 punktów, które zostały napisane i opublikowane na liście dyskusyjnej języka Python w roku; treść manifestu można przeczytać, wydając polecenie import this w środowisku IDLE