Символдық жолдармен жұмыс
Атыңды, мекенжайыңды, WhatsApp хабарламаңды — компьютер бәрін мәтін ретінде сақтайды. Ал мәтінмен ЖҰМЫС ІСТЕУ (бір бөлігін алу, өзгерту, салыстыру) деген нақты қандай ережелермен жүреді? Бүгін Python-дағы жолдармен (string) жұмыстың негіздерін үйренеміз — бұл кез келген нақты бағдарламаның (тіркелу формасынан бастап чат-ботқа дейін) құрамдас бөлігі.
Символдық жол (string) — жадының көрші ұяшықтарында орналасқан символдар тізбегі. Python-да
str типімен беріледі, ұзындығына шектеу жоқ (жад көлемінен басқа).
Мәтінді бір немесе екі тырнақшаға алса, Python оны жол ретінде таниды: 'hello' немесе "Welcome" — екеуі де бірдей жұмыс істейді. Көп жолды мәтін үшін ҮШ тырнақша қолданылады: '''Bul ote uzyn jol'''.
Ал егер жолдың ІШІНДЕ тырнақша таңбасының өзін жазу керек болса ше? Мұнда арнайы «қашу (escape) тізбегі» көмекке келеді:
| Escape тізбегі | Мағынасы |
|---|---|
\n | Жаңа жолға өту |
\t | Табуляция белгісі |
\\ | Солға қарай көлбеу сызық |
\' | Бір тырнақша символы |
\" | Қос тырнақша символы |
Жолдың әрбір символының өз «нөмірі» (индексі) бар, ол 0-ден басталады. Мысалы, s = 'Def Python' дегенде s[0] — 'D', s[2] — 'f'. Ал теріс индекс жолдың СОҢЫНАН санайды: s[-1] — соңғы символ.
Жолдың бір бөлігін алу үшін «срез» (slice) қолданылады — s[i:j:k]: i-ден j-ге дейін (j кірмейді), k қадаммен.
| Жазылуы | Нәтижесі («Python programming» үшін) |
|---|---|
s[7:11] | 'prog' |
s[:3] | 'Pyt' (0-ден 3-ке дейін) |
s[::2] | Әр екінші символ |
s[::-1] | Кері ретпен: 'gnimmargorp nohtyP' |
s[:-1] | Соңғы символсыз |
Берілді: s = 'Qazaqstan Respublikasy' жолы.
Табу керек: «Qazaqstan» және «Respublika» сөздерін бөлек шығару, ұзындығымен қоса.
s = 'Qazaqstan Respublikasy'
print(s[0:9], len(s[0:9]))
print(s[10:19], len(s[10:19])) Жауабы: Qazaqstan 9, Respublika 10
Берілді: 'Асхат 16' жолы (аты мен жасы).
s = 'Асхат 16'
a = s[0:5]
t = int(s[6:8])
print(a, int(t) + 1) Жауабы: Асхат 17
Жолдың ұзындығын білу үшін len() функциясы қолданылады: len('информатика') → 11.
>>> s = 'Move'
>>> s[0] = 'L'
TypeError: 'str' object does not support item assignment Жолды «өзгерту» керек болса, ЕСКІ жолдың бөліктерінен ЖАҢА жол құрастыру керек (мыс. s = 'L' + s[1:]).
Жолдарды салыстыру да ерекше: == — барлық символ ТЕҢ болса ғана шын, ол РЕГИСТРГЕ СЕЗІМТАЛ (яғни «Informatics» мен «informatics» — ЕКІ БӨЛЕК жол). Ал <, > операторлары символдардың коды (алфавиттік реті) бойынша салыстырады.
s1 = 'Organ'
s2 = 'Orkestr'
s1 > s2 # False, өйткені 'g' коды 'k' кодынан кем Берілді: пайдаланушы «есімде жоқ» деп жауап берсе, программа МЕРЗІМІНЕН БҰРЫН тоқтауы керек.
Қалай тоқтатамыз? sys модуліндегі exit() командасы программаны кез келген жерде дереу аяқтайды.
import sys
print('Olen saiysy')
answer = input()
if answer == 'esimde joq':
print('Keshirim. Kelesi joly jalgastyrasyn.')
sys.exit()
print('Ogan kaigy jeseniz') Жауабы: пайдаланушы дәл «esimde joq» деп жазса, программа sys.exit() арқылы бірден тоқтайды.
Жол мен санды бір-біріне түрлендіру жиі керек болады:
| Функция | Мысал |
|---|---|
str() | str(985) → '985' (санды жолға) |
int() | int('253') → 253 (жолды санға) |
ord() | ord('B') → 66 (символ коды) |
chr() | chr(66) → 'B' (код бойынша символ) |
max() / min() | Жолдағы ЕҢ ҮЛКЕН/КІШІ кодты символды қайтарады |
Мәтінді форматтаудың ескірек, бірақ әлі кездесетін тәсілі — % операторы:
s = 'Hello %s' % 'word' # 'Hello word'
s = 'one %d %f' % (2, 3.5) # 'one 2 3.500000' | Код | Мәні |
|---|---|
%s | Жолдық |
%d, %i | Бүтін ондық |
%f | Жылжымалы үтір (ондық) |
%x | Оналтылық |
%% | «%» таңбасының өзі |
s[0]='L' секілді тікелей өзгерту қате береді.== мен </> код бойынша жұмыс істейді.- Жол (string) — символдар тізбегі, Python-да
strтипімен беріледі, өзгермейтін (immutable). - Индексация 0-ден басталады; срез
s[i:j:k]арқылы жолдың кез келген бөлігін алуға болады. - Салыстыру регистрге сезімтал,
</>символ коды бойынша жұмыс істейді. str(),int(),ord(),chr()— тип түрлендіру функциялары;%операторы — жолды форматтау тәсілі.