Kurs maturalny z języka angielskiego!
kurs-maturalny-jezyk-angielski

PROGRAMOWANIE I ALGORYTMY

Zajęcia maturalne z informatyki
Olimpiada Informatyczna Juniorów
    Prowadzący: Marcin Kasprowicz
  • właściciel serwisu algorytm.edu.pl
  • wrzesień 2024 — start zajęć
  • czytaj więcej

Python — napisy/łańcuchy


powrót

Zbiór zadań z rozwiązaniami

Napisy, czyli ciągi znaków/łańcuchy, są przechowywane w języku Python w zmiennej typu str.

Inicjacja zmiennej przechowującej napis

Aby utworzyć zmienną typu str i nadać jej wartość, która jest łańcuchem znaków, można posłużyć się jednym z poniższych schematów:

napis = "To jest napis" # tekst zapisujemy w podwójnym cudzysłowie
napis2 = 'To także jest napis' # lub w pojedynczym apostrofie

print(napis+'\n'+ napis2)

print(type(napis)) # za pomocą funkcji type sprawdzisz typ swojej zmiennej
Wyjście
To jest napis
To także jest napis

Zapisanie kilku wierszy znaków

W takiej sytuacji należy umieścić tekst w potrójnych opostrofach/cydzysłowach:

napis = '''Ten tekst
zawiera kilka wierszy,
które zapisane sa w zmiennej napis!'''
print(napis)

napis = """Ten tekst
zawiera kilka wierszy,
które zapisane sa w zmiennej napis!"""
print(napis)
Wyjście
Ten tekst
zawiera kilka wierszy,
które zapisane sa w zmiennej napis!
Ten tekst
zawiera kilka wierszy,
które zapisane sa w zmiennej napis!

Znak końca wiersza (enter)

Kombinacja znaków \n powoduje wstawieni znaku końca wiersza.

napis = 'Ten tekst\nzapisany jest\nw trzech wierszach'
print(napis)
Wyjście
Ten tekst
zapisany jest
w trzech wierszach

Odwołanie się do pojedynczego znaku

Wyobraźmy sobie szufladki, które numerujemy kolejnymi liczbami naturalnymi: 0, 1, 2, .... Pierwszy znak znajduje się w szufladce o numerze 0, drugi o numerze 1, ... ostatni o numerze: liczba_znaków - 1, czyli len(napis) - 1. Aby sprawdzić, jaki znak znajduje się na i-tej pozycji, użyjemy konstrukcji:$$zmienna[nr_szufladki].$$Jest możliwość odwołania się do znaków znajdujących się na końcu łańcucha podając ujemną wartość w nawiasie kwadratowym:

print(napis[0]) # wypisanie pierwszego znaku, czyli "P"
print(napis[1]) # wypisanie drugiego znaku, czyli "r"
print(napis[-1]) # wypisanie ostatniego znaku, czyli "n"
print(napis[-2]) # wypisanie przedostatniego znaku, czyli "o"

Wycinki

Przegląd wszystkich znaków

W celu poprania każdej litery oddzielnie i wykonania na niej pewnej operacji można użyć pętli for z operatorem in:

# *******************algorytm.edu.pl**************************
#To zadanie polega na wstawieniu dodatkowej spacji między każdym znakiem
# *******************główna część programu********************

napis = "Programowanie i algorytmy"
napis_ze_spacjami = ''
for i in napis: # pobieramy kolejne znaki i zapisujemy je w zmiennej i
    napis_ze_spacjami += i + ' '

print(napis_ze_spacjami)
Wyjście
P r o g r a m o w a n i e   i   a l g o r y t m y 

Wycinki i podciągi, w Pythonie można prościej

# *******************algorytm.edu.pl**************************
# Prezentacja wycinania elementów z łańcucha
# *******************główna część programu********************

napis = "Programowanie i algorytmy"
wycinek = napis[:2]     # przypisanie dwóch początkowych znaków 
print(wycinek)			# 'Pr'

wycinek = napis[2:]     # przypisanie wszystkich znaków oprócz dwóch początkowych
print(wycinek)			# 'ogramowanie i algorytmy'

wycinek = napis[1:4]    # przypisanie znaków o indeksach 1, 2 oraz 3 (bez 4)
print(wycinek)          # 'rog'

wycinek = napis[::3]    # przypisanie znaków o indeksach 0, 0+3, 3+3, 6+3, ...
print(wycinek)          # Pgmae gyy

wycinek = napis[1::3]    # przypisanie znaków o indeksach 1, 1+3, 4+3, 7+3, ...
print(wycinek)           # rron aot

wycinek = napis[::-1]    # przypisanie znaków w szyku odwróconym
print(wycinek)           # ymtyrogla i einawomargorP

wycinek = napis[::-2]    # przypisanie znaków w szyku odwróconym, co druga litera
print(wycinek)           # ytrgaienwmroP

wycinek = napis[-2::-2]    # przypisanie znaków w szyku odwróconym, począwszy od przedostatniej
                            # co druga litera
print(wycinek)           # myol  iaoagr
Wyjście
Pr
ogramowanie i algorytmy
rog
Pgmae gyy
rron aot
ymtyrogla i einawomargorP
ytrgaienwmroP
myol  iaoagr

Przydatne funkcje i metody

  1. len(napis) - Funkcja zwraca liczbę znaków w zmiennej napis.

  2. .__hash__() - Metoda zwraca hasz (hash) obiektu string, który jest używany do efektywnego indeksowania i porównywania w słownikach i zbiorach.

  3. .__sizeof__() - Metoda zwraca ilość zajmowanej pamięci przez obiekt string.

  4. .capitalize() - Metoda zwraca kopię stringa, w którym pierwsza litera jest zamieniana na wielką (capitalize), a pozostałe litery na małe.

  5. .casefold() - Metoda zwraca kopię stringa, w którym wszystkie litery są zamieniane na małe i usuwane są znaki diakrytyczne, co jest przydatne do porównywania stringów w sposób nieczuły na wielkość liter i różnice diakrytyczne.

  6. .center(width[, fillchar]) - Metoda zwraca string, który jest wycentrowany na szerokość width i wypełniony znakiem fillchar (domyślnie spacją) z obu stron.

  7. .count(sub[, start[, end]]) - Metoda zwraca liczbę wystąpień podstringa sub w stringu, opcjonalnie można podać argumenty start i end określające zakres przeszukiwania.

  8. .encode(encoding='utf-8', errors='strict') - Metoda zwraca zakodowaną wersję stringa używając określonego kodowania encoding. Argument errors określa sposób obsługi błędów kodowania.

  9. .endswith(suffix[, start[, end]]) - Metoda sprawdza, czy string kończy się określonym sufiksem suffix, opcjonalnie w określonym zakresie start i end.

  10. .expandtabs(tabsize=8) - Metoda zastępuje znaki tabulacji ('\t') spacjami w liczbie określonej przez argument tabsize (domyślnie 8).

  11. .find(sub[, start[, end]]) - Metoda zwraca indeks pierwszego wystąpienia podstringa sub w stringu lub -1, jeśli nie zostanie znaleziony. Opcjonalnie można podać argumenty start i end dla określenia zakresu przeszukiwania.

  12. .format(*args, **kwargs) - Metoda służy do formatowania stringa, zastępując znaczniki {} wartościami podanymi jako argumenty lub używając argumentów z mapy kwargs.

  13. .format_map(mapping) - Metoda działa podobnie do .format(), ale używa mapy mapping do podstawiania wartości za znaczniki.

  14. .index(sub[, start[, end]]) - Metoda działa podobnie do .find(), ale zgłasza wyjątek ValueError, jeśli podstring sub nie zostanie znaleziony.

  15. .isalnum() - Metoda zwraca True, jeśli wszystkie znaki w stringu są literami lub cyframi (alfanumeryczne), w przeciwnym razie zwraca False.

  16. .isalpha() - Metoda zwraca True, jeśli wszystkie znaki w stringu są literami, w przeciwnym razie zwraca False.

  17. .isascii() - Metoda zwraca True, jeśli wszystkie znaki w stringu należą do zbioru znaków ASCII, w przeciwnym razie zwraca False.

  18. .isdecimal() - Metoda zwraca True, jeśli wszystkie znaki w stringu są cyframi dziesiętnymi, w przeciwnym razie zwraca False.

  19. .isdigit() - Metoda zwraca True, jeśli wszystkie znaki w stringu są cyframi, w tym także te spoza zakresu dziesiętnego, w przeciwnym razie zwraca False.

  20. .isidentifier() - Metoda zwraca True, jeśli string jest poprawnym identyfikatorem w Pythonie (np. nazwą zmiennej), w przeciwnym razie zwraca False.

  21. .islower() - Metoda zwraca True, jeśli wszystkie litery w stringu są małe, w przeciwnym razie zwraca False.

  22. .isnumeric() - Metoda zwraca True, jeśli wszystkie znaki w stringu są znakami numerycznymi (cyfry), w przeciwnym razie zwraca False.

  23. .isprintable() - Metoda zwraca True, jeśli wszystkie znaki w stringu są drukowalne (nie są to znaki kontrolne), w przeciwnym razie zwraca False.

  24. .isspace() - Metoda zwraca True, jeśli wszystkie znaki w stringu są białymi znakami (np. spacje, tabulacje), w przeciwnym razie zwraca False.

  25. .istitle() - Metoda zwraca True, jeśli string jest napisem w stylu tytułu, czyli zaczyna się wielką literą, a pozostałe litery są małe, w przeciwnym razie zwraca False.

  26. .isupper() - Metoda zwraca True, jeśli wszystkie litery w stringu są wielkie, w przeciwnym razie zwraca False.

  27. .join(iterable) - Metoda łączy elementy z iterable (np. listy lub krotki) za pomocą stringa, na którym została wywołana, jako separatora.

  28. .ljust(width[, fillchar]) - Metoda zwraca string wyrównany do lewej na szerokość width i wypełniony znakiem fillchar (domyślnie spacją).

  29. .lower() - Metoda zwraca kopię stringa, w którym wszystkie litery są zamieniane na małe.

  30. .lstrip([chars]) - Metoda zwraca kopię stringa, w którym usuwane są początkowe białe znaki (lub znaki zdefiniowane w chars, jeśli podano).

     

  31. .maketrans(x[, y[, z]]) - Metoda służy do tworzenia tablicy translacji (translacyjnej). Jest to przydatna funkcja do zamiany znaków na inne znaki lub usuwania znaków z stringa. Argumenty x, y, i z to sekwencje znaków, gdzie x i y są równoliczne i określają znaki do zamiany, a z określa znaki do usunięcia. Możesz ją wykorzystać razem z metodami translate() lub str.translate().

  32. .partition(sep) - Metoda dzieli string na trzy części: przed pierwszym wystąpieniem separatora sep, sam separator sep, i wszystko po separatorze. Zwraca te trzy części jako trójelementową krotkę.

  33. .removeprefix(prefix) - Metoda usuwa podany prefix z początku stringa, jeśli istnieje. Jest dostępna od Pythona 3.9.

  34. .removesuffix(suffix) - Metoda usuwa podany sufiks z końca stringa, jeśli istnieje. Jest dostępna od Pythona 3.9.

  35. .replace(old, new[, count]) - Metoda zwraca kopię stringa, w którym wszystkie wystąpienia old są zastępowane przez new. Opcjonalny argument count pozwala ograniczyć liczbę zamian.

  36. .rfind(sub[, start[, end]]) - Metoda działa podobnie do .find(), ale szuka od końca stringa i zwraca indeks ostatniego wystąpienia sub lub -1, jeśli nie zostanie znalezione. Opcjonalnie można podać argumenty start i end dla określenia zakresu przeszukiwania.

  37. .rindex(sub[, start[, end]]) - Metoda działa podobnie do .rfind(), ale zgłasza wyjątek ValueError, jeśli podstring sub nie zostanie znaleziony.

  38. .rjust(width[, fillchar]) - Metoda zwraca string wyrównany do prawej na szerokość width i wypełniony znakiem fillchar (domyślnie spacją).

  39. .rpartition(sep) - Metoda działa podobnie do .partition(), ale szuka separatora od końca stringa.

  40. .rsplit([sep[, maxsplit]]) - Metoda dzieli string na podstringi zaczynając od końca i zwraca je jako listę. Opcjonalnie można podać separator sep i maksymalną liczbę podziałów maxsplit.

  41. .rstrip([chars]) - Metoda zwraca kopię stringa, w którym usuwane są końcowe białe znaki (lub znaki zdefiniowane w chars, jeśli podano).

  42. .split([sep[, maxsplit]]) - Metoda dzieli string na podstringi i zwraca je jako listę. Opcjonalnie można podać separator sep i maksymalną liczbę podziałów maxsplit.

  43. .splitlines([keepends]) - Metoda dzieli string na linie i zwraca je jako listę. Opcjonalny argument keepends pozwala zachować znaki nowej linii na końcu każdej linii.

  44. .startswith(prefix[, start[, end]]) - Metoda sprawdza, czy string zaczyna się od określonego prefixu prefix, opcjonalnie w określonym zakresie start i end.

  45. .strip([chars]) - Metoda zwraca kopię stringa, w którym usuwane są zarówno początkowe, jak i końcowe białe znaki (lub znaki zdefiniowane w chars, jeśli podano).

  46. .swapcase() - Metoda zwraca kopię stringa, w którym wszystkie litery są zamieniane na przeciwne wielkości liter, czyli małe na wielkie i wielkie na małe.

  47. .title() - Metoda zwraca kopię stringa, w którym każde słowo zaczyna się wielką literą, a pozostałe litery są małe, tworząc efekt tytułu.

  48. .translate(table) - Metoda tłumaczy string z użyciem tablicy translacji stworzonej przez funkcję str.maketrans().

  49. .upper() - Metoda zwraca kopię stringa, w którym wszystkie litery są zamieniane na wielkie.

  50. .zfill(width) - Metoda zwraca string, w którym zostają dodane zera na początku, aby osiągnąć daną szerokość width.

To są podstawowe metody typu string w Pythonie, które umożliwiają manipulację i przetwarzanie stringów w różny sposób. Każda z tych metod ma swoje zastosowanie w zależności od konkretnej sytuacji.