Сатрҳо
Сатрҳоро мо аз дарси аввал истифода мебарем. Акнун ҷудо кардани онҳоро ба қисмҳо меомӯзем: гирифтани аломатҳои алоҳида, буридани порчаҳо, ҷустуҷӯ ва иваз кардан.
Сатр — пайдарпайии аломатҳо
Ҳар аломати сатр рақам дорад — индекс. Рақамгузорӣ аз сифр сар мешавад:
s = "дарахт"
д а р а х т
индекс 0 1 2 3 4 5
аз охир -6 -5 -4 -3 -2 -1
s = "дарахт"
print(s[0]) # д
print(s[3]) # а
print(s[-1]) # т — аломати охирин
print(len(s)) # 6 — дарозӣ
Аломати охирин — s[len(s) - 1] ё соддатар s[-1]. Муроҷиат ба индекси берун аз сатр, масалан s[6], хатои IndexError медиҳад.
Бурришҳо
Бурриш s[a:b] — порчаи сатр аз индекси a то b, бе дохил кардани b (мисли range):
s = "барномасозӣ"
print(s[0:5]) # барно
print(s[:3]) # бар — аз аввал
print(s[5:]) # масозӣ — то охир
print(s[-4:]) # созӣ — 4 аломати охирин
Параметри сеюм — қадам:
s = "0123456789"
print(s[::2]) # 02468 — ҳар дуюмаш
print(s[1::3]) # 147
print(s[::-1]) # 9876543210 — тамоми сатр баръакс
Бурришҳо хато намедиҳанд, ҳатто агар сарҳадҳо берун аз сатр бошанд: s[5:100] танҳо ҳама чизро то охир бармегардонад.
Сатрҳо тағйирнопазиранд
Аломатро аз рӯи индекс иваз кардан мумкин нест: s[0] = "А" хато медиҳад. Ба ҷои ин сатри нав ҷамъ мекунанд:
s = "гурба"
s = "Г" + s[1:]
print(s) # Гурба
Гузаштан аз аломатҳо
Давраи for метавонад сатрро аломат ба аломат гузарад:
word = "лаблабу"
count = 0
for ch in word:
if ch == "б":
count += 1
print(count) # 2
Агар индекс ҳам лозим бошад, range(len(s))-ро гузар:
s = "abcd"
for i in range(len(s)):
print(i, s[i])
Бо индекс муқоиса кардани аломатҳои ҳамсоя қулай аст: s[i] ва s[i - 1] (аз i = 1 сар карда).
Ҷамъ кардани сатр порча ба порча
Сатри навро аксар вақт дар давра, аз сатри холӣ сар карда, месозанд:
s = "hello"
res = ""
for ch in s:
res += ch + "-"
print(res) # h-e-l-l-o-
Ададро ба сатр str() табдил медиҳад: "x" + str(5) "x5" медиҳад.
Методҳои сатр
Методҳо бо нуқта даъват мешаванд: сатр.метод(). Онҳо сатри аслиро тағйир намедиҳанд, балки сатри нав бармегардонанд.
| Метод | Чӣ мекунад | Мисол |
|---|---|---|
s.upper(), s.lower() |
ҳамаи ҳарфҳо калон / хурд | "Ab".upper() → "AB" |
s.count(t) |
t чанд бор вомехӯрад |
"abab".count("ab") → 2 |
s.find(t) |
индекси вохӯрии аввал ё -1 |
"abc".find("c") → 2 |
s.replace(a, b) |
ҳамаи a-ро ба b иваз кардан |
"a-b".replace("-", "+") → "a+b" |
s.strip() |
фосилаҳоро аз канорҳо гирифтан | " hi ".strip() → "hi" |
s.isdigit() |
ҳамаи аломатҳо рақаманд? | "123".isdigit() → True |
s.isalpha() |
ҳамаи аломатҳо ҳарфанд? | "abc".isalpha() → True |
Оператори in месанҷад, ки зерсатр ҳаст ё не: "гул" in "гулоб" — True.
Муқоисаи сатрҳо
Сатрҳо аломат ба аломат, мисли калимаҳо дар луғат, муқоиса мешаванд: "apple" < "banana" — True. Бинобар ин санҷиши «аломат — ҳарфи хурди лотинӣ» чунин навишта мешавад:
ch = "q"
if "a" <= ch <= "z":
print("ҳарфи хурди лотинӣ")
Рамзҳои аломатҳо: ord ва chr
Дар дохили компютер ҳар аломат — адад, яъне рамзи он аст. ord рамзи аломатро медиҳад, chr — аломатро аз рӯи рамз:
print(ord("a")) # 97
print(ord("b")) # 98
print(chr(100)) # d
Ҳарфҳои лотинӣ паси ҳам меоянд: рамзи a 97, b — 98, …, z — 122. Бинобар ин рақами ҳарф дар алифбо — ord(ch) - ord("a") (барои a ин 0, барои z — 25), ва ҳарфро аз рӯи рақам chr(рақам + ord("a")) медиҳад.
Бо рақамҳо низ ҳамин тавр: ord("7") - ord("0") ба 7 баробар аст.
ch = "c"
num = ord(ch) - ord("a") # 2
print(chr(num + 1 + ord("a"))) # d — ҳарфи навбатӣ
Хулоса
s[i]— аломат,s[-1]— охирин,len(s)— дарозӣ;s[a:b:қадам]— бурриш,s[::-1]— сатр баръакс;- сатрҳо тағйирнопазиранд: сатри навро тавассути
+ҷамъ кун; for ch in sаломатҳоро мегузарад;- методҳои
upper,lower,count,find,replace,strip,isdigit; ordваchrаломатро ба рамз ва баръакс табдил медиҳанд.