Lekcja 7 składa się z trzech części A, B i C, które można wykonać w dowolnej kolejności.
Do tej pory używaliśmy łańcuchów (elementów typu str
) tylko w podstawowym zakresie. W tej lekcji pokazujemy, jak manipulować łańcuchami: jak je dzielić, łączyć i jak wyświetlać pojedyncze znaki tworzące łańcuch.
Co to jest łańcuch?
Wszystkie dane w komputerze przechowywane są ostatecznie w postaci sekwencji zer i jedynek. Dotyczy to tekstów, cyfrowych książek, obrazów, piosenek, filmów wideo i "plików wykonywalnych", takich jak gry i aplikacje. Łańcuchy, przykładowo dane tekstowe, są przechowywane w następujący sposób:
- łańcuch to ciąg znaków (n.p., łańcuch "Hello, World!" zawiera 13 znaków, w tym litery takie jak "H", "e" i interpunkcyjne takie jak " ", "!"
- w rzeczywistości każdy znak jest reprezentowany przez liczbę (n.p., "H" jest reprezentowane przez liczbę 40; to jest jego wartość w kodzie ASCII/Unicode)
(Liczby są przechowywane w formacie binarnym 0-1.)
Przetwarzanie łańcuchów jako ciągu znaków: S[]
Aby przetwarzać łańcuch, musimy mieć dostęp do pojedynczych znaków tworzących ten łańcuch. W Pythonie jest to wykonywane w następujący sposób: dla łańcucha S
i dla całkowitego index
, zapis
S[index]zwraca znak z pozycji
index
z łańcucha S
. Zgodnie z konwencją, pierwszy element łańcucha ma index 0: tak więc S[0]
to pierwszy znak, S[1]
to drugi znak itd. W "Hello, World" lista znaków to:
Index: 0 1 2 3 4 5 6 7 8 9 10 11 12 Char.: H e l l o , W o r l d !Zauważ, że znak, którego index wynosi 6 to spacja.
W wielu językach programowania istnieje osobny typ danych dla znaków. W Pythonie, znaki są łańcuchami o długości 1, więc ich typ to str . |
Sprawdzanie liczby znaków w łańcuchu: len
W Pythonie, aby sprawdzić liczbę znaków w łańcuchu, używamy funkcji len
. Na przykład len
("Hello, World!") wynosi 13.
S
?len(S)
podaje liczbę znaków w łańcuchu, ale rozpoczyna zliczanie od indeksu 0
, więc ostatni znak ma indeks len(S)-1
.Oto przykład użycia len
i []
, dwóch narzędzi, które właśnie zostały wprowadzone.
Cięcie łańcuchów: S[:]
Wycięcie części łańcucha daje podłańcuch. Na przykład łańcuchy "eat" i "ted" to podłańcuchy "repeated". W Pythonie, aby wyodrębnić podłańcuch, używamy następującej składni
S[firstIndex:tailIndex]do uzyskania podłańcucha rozpoczynającego się od indeksu firstIndex i kończącego się na tailIndex-1. Sprawdź efekt działania następującego kodu.
Zauważ, że przy otrzymywaniu podłańcucha, firstIndex jest częścią podłańcucha, natomiast tailIndex już nie. Zapominanie o tym, jest częstym źródłem błędów. Ma to jednak dobre strony. Na przykład, ze względu na to ustalenie, długość podłańcucha S[i:j] wynosi zawsze j-i . Konwencja ta jest często przedstawiana jako linijka: |
Sklejanie łańcuchów: +
Wszyscy wiemy, że 1 + 2 = 3. Dla ciągów otrzymujemy następujący wynik:
Jak widać, efektem S + T
jest utworzenie nowego łańcucha, który zaczyna się od S
i po tym zaraz następuje T
. Ta operacja sklejania łańcuchów nazywana jest również konkatenacją.
Jeśli chcesz złączyć dwie liczby, musisz je najpierw przekonwertować na str . W przeciwnym razie dostaniesz, w zależności od kolejności prób, jeden z dwóch błędów. Uruchom ten program, aby zobaczyć jakie błędy mogą wystąpić.
Oto poprawny przykład: funkcja str() przed połączeniem konwertuje liczbę na łańcuch .
|
Jak wspomnieliśmy w lekcji 4, łańcuchy i liczby całkowite można mnożyć: S * n
jest skróconym zapisem dla S + S + ... + S
.
Kody Znaków: ord
, chr
Jak wspomniano we wprowadzeniu do tej lekcji, twój komputer faktycznie reprezentuje każdy znak w postaci liczby. Jaka liczba odpowiada określonemu znakowi? Ogólnie rzecz biorąc, może to zależeć od tego, co koduje twój komputer, ale prawie wszystkie nowoczesne komputery mają standardowy zestaw znaków dla liczb między 32 a 255. Oto lista znaków z liczbami między 32 a 127:
ord: 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 chr: ! " # $ % & ' ( ) * + , - . / ord: 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 chr: 0 1 2 3 4 5 6 7 8 9 : ; < = > ? ord: 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 chr: @ A B C D E F G H I J K L M N O ord: 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 chr: P Q R S T U V W X Y Z [ \ ] ^ _ ord: 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 chr: ` a b c d e f g h i j k l m n o ord: 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 chr: p q r s t u v w x y z { | } ~Później, w lekcji 8, napiszesz program do wygenerowania tej tabeli.
Nie jest przydatne zapamiętywanie całej tabeli, ale warto pamiętać o pewnych faktach:
- małe litery a, b, c, ..., z mają kolejne kody
- wielkie litery A, B, C, ..., Z mają kolejne kody
- cyfry 0, 1, 2, ..., 9 mają kolejne kody
Znak 32 to spacja, a znak 127 (to Delete) to jeden z kilku specjalnych znaków "kontrolnych". Niektóre przydatne znaki kontrolne to 9, czyli Tab, oraz 10 i 13, które są używane dla newlines.
W Pythonie można konwertować znak na odpowiedni kod liczbowy używając funkcji ord
. Funkcja chr
daje efekt odwrotny: przyjmuje liczbę jako dane wejściowe i zwraca znak o tym kodzie.
Niektóre systemy obsługują tylko drukowane znaki między 32 a 127; inne do 255 lub 65535; w Unicode są setki tysięcy znaków. Więcej na temat historii tego zagadnienia możesz przeczytać tutuj lub tutaj. |
Oto dwa dodatkowe ćwiczenia, które kończą tą lekcję.
Przejdź do następnej lekcji!