Məzmuna keç
Educora
Orta9-cu sinif25 dəq34 / 59

Sətirlər və onlar üzərində əməllər

İndekslər (mənfi indekslər də), kəsiklər və `[::-1]`; `len`, `+`, `*`, `in`, `count`, `find`, `replace`, `upper`, `isdigit`, `split`, `join`; simvollar üzrə dövr, `str(n)` ilə rəqəmlərlə işləmək və DİM yazılı tapşırıqlarının sətir şablonları.

Özünü yoxla
Bu dərsdə öyrənəcəksən
  • indekslərlə (mənfi indekslər də) və kəsiklərlə, o cümlədən [::-1] ilə işləmək
  • len, +, *, in əməllərinin və count, find, replace, upper, lower, isdigit, split, join metodlarının nəticəsini əvvəlcədən demək
  • simvollar üzrə dövr qurub yeni sətir yığmaq: müxtəlif simvollar, filtrlər, qonşu simvollar
  • bir sətirdə verilən elementləri split(' ') ilə emal etmək və str(n) ilə rəqəmlərlə işləmək

'Bakı 2026' — 9 simvoldan ibarət bir sətirdir: 4 hərf, 1 boşluq və 4 rəqəm. Python üçün sətir nömrələnmiş simvollar zənciridir: istənilən simvolu nömrəsi ilə götürmək, bir hissəsini kəsmək, simvolları saymaq və sətri tərsinə çevirmək olar. 2025-ci ilin hər iki DİM variantında yazılı proqramlardan biri sətir üzərində idi (müxtəlif simvolların sayı; bir sətirdə boşluqla verilmiş elementlərin emalı), 2026-cı ildə isə sətir əməlləri siyahı və funksiya tapşırıqlarının içində işləndi. Bu dərs «Proqramlaşdırma dilləri və Python: dəyişənlər, daxiletmə və xaricetmə» dərsindəki input() və str tipinin davamıdır.

Sətir, indeks və kəsik

Tərif
Sətir (str)

Dırnaq işarələri arasında yazılmış simvollar ardıcıllığı: 'data', "3ab6", '' (boş sətir). input() klaviaturadan daxil ediləni həmişə sətir kimi qaytarır; ədəd lazımdırsa, int(input()) yazılır.

Tərif
İndeks

Simvolun sətirdəki sıra nömrəsi. Soldan 0-dan başlayır: birinci simvol s[0], sonuncu s[len(s) - 1]. Sağdan mənfi indekslərlə sayılır: s[-1] — sonuncu, s[-2] — sondan ikinci simvol.

s = 'PYTHON'PYTHON
indeks012345
mənfi indeks−6−5−4−3−2−1
Hər simvolun iki nömrəsi var: s[1] və s[-5] eyni simvoldur — 'Y'.
s[i] s[-1] = s[len(s) - 1]
burada:
  • s[i]i indeksli simvol (özü də sətirdir)
  • len(s)sətirdəki simvolların sayı; son indeks len(s) − 1-dir

s[len(s)] xəta verir (IndexError): belə indeks yoxdur.

s[a:b:c]
burada:
  • abaşlanğıc indeks (daxildir); yazılmasa — əvvəldən
  • bson indeks (daxil deyil); yazılmasa — sona qədər
  • caddım; yazılmasa 1-dir; mənfi addım sağdan sola gedir

Kəsik a-dan b − 1-ə qədər c addımla gedir. s[::-1] — tərs sətir; c = 1 olduqda kəsikdə b − a simvol olur.

Python
s = 'programming'
print(len(s), s[0], s[-1], s[3])
print(s[3:7], s[:3], s[7:])
print(s[::2], s[::-1])
print(s[-4:], s[1:8:3])
▸ Gözlənilən nəticə
11 p g g
gram pro ming
pormig gnimmargorp
ming rrm
Hər sətri əvvəlcə özün hesabla: 'programming' sətrində 11 simvol var, indekslər 0…10.
Nümunə 1. İndekslər və kəsiklər

s = 'informatics' üçün tapın: 1) s[2:6]; 2) s[-3:]; 3) s[1::3]; 4) s[5] + s[0]; 5) s[::-1][:4].

Həllini göstər
İndekslər: i0 n1 f2 o3 r4 m5 a6 t7 i8 c9 s10 (len = 11).
1) 2, 3, 4, 5 → 'form' (6 daxil deyil).
2) son üç simvol → 'ics'.
3) 1, 4, 7, 10 → 'nrts'.
4) 'm' + 'i' → 'mi' (+ sətirləri birləşdirir).
5) tərs sətir 'scitamrofni', onun ilk dörd simvolu → 'scit'.

Əməllər və metodlar

Sətir üzərində əməllər yeni sətir və ya ədəd qaytarır, ilkin sətir isə dəyişmir: sətir dəyişməzdir, s[0] = 'P' yazmaq xəta verir. Dəyişiklik lazımdırsa, yeni sətir qurub dəyişənə yenidən mənimsədirik: s = s.upper().

ƏməlNə edirNümunəNəticə
len(s)simvolların sayılen('banana')6
+, *birləşdirmə, təkrar'ab' + 'c', 'ab' * 3'abc', 'ababab'
inalt sətir varmı'nan' in 'banana'True
s.count(x)x neçə dəfə var (üst-üstə düşmədən)'banana'.count('a'), 'banana'.count('ana')3, 1
s.find(x)ilk rast gəlinən indeks, yoxdursa −1'banana'.find('n'), 'banana'.find('z')2, -1
s.index(x)find kimi, amma x yoxdursa xəta'banana'.index('a')1
s.replace(a, b)bütün a-ları b ilə əvəz edir'banana'.replace('a', 'o')'bonono'
s.upper(), s.lower()böyük / kiçik hərflər'Baku'.upper()'BAKU'
s.isdigit()yalnız rəqəmlərdən ibarətdirmi'2026'.isdigit(), '20a'.isdigit()True, False
s.split(x)x-ə görə siyahıya bölür'3 ab 45'.split(' ')['3', 'ab', '45']
x.join(a)siyahının elementlərini x ilə birləşdirir'-'.join(['a', 'b'])'a-b'
Əsas sətir əməlləri. split və join siyahılarla işləyir — bax: «Siyahılar və onlar üzərində əməllər».
Python
s = 'banana'
print(s.count('a'), s.count('ana'), s.find('n'), s.find('z'))
print(s.replace('a', 'o'), s.upper(), 'nan' in s)
print('2026'.isdigit(), '20a'.isdigit())
print('ab' * 3 + '!', len(s * 2))
▸ Gözlənilən nəticə
3 1 2 -1
bonono BANANA True
True False
ababab! 12
s.replace və s.upper yeni sətir qaytarır; s özü 'banana' olaraq qalır.

Böyük və kiçik hərflər fərqli simvollardır: 'A' == 'a' yalandır. Hərfi registrdən asılı olmadan saymaq üçün əvvəlcə sətri kiçik hərflərə çevir: s.lower().count('a'). upper() və lower() rəqəmlərə və işarələrə toxunmur.

Python
s = 'abracadabra'
k = s.count('a') + s.find('c')
t = s[k:] + s[:2]
print(t)
▸ Gözlənilən nəticə
raab
Nümunə 2-nin proqramı: əvvəl nəticəni özün tap.
Nümunə 2. DİM tipli tapşırıq: metodlar və kəsiklər

Yuxarıdakı proqramın nəticəsini müəyyən edin.
A) braab B) raab C) raba D) abra E) ra

Həllini göstər
İndekslər: a0 b1 r2 a3 c4 a5 d6 a7 b8 r9 a10.
s.count('a') = 5 (0, 3, 5, 7, 10 indekslərində), s.find('c') = 4, deməli k = 9.
s[9:] = 'ra', s[:2] = 'ab', t = 'ra' + 'ab' = 'raab'. Cavab: B.

Simvollar üzrə dövr və yeni sətrin qurulması

Sətri iki cür gəzmək olar: simvolların özü üzrə (for c in s:) və indekslər üzrə (for i in range(len(s)):). İkinci yol mövqe və ya qonşu simvollar (s[i] və s[i + 1]) lazım olanda seçilir. Yeni sətri boş sətirdən (k = '') başlayıb k = k + c ilə yığırıq; k = c + k isə simvolları tərs sırada yığır.

  1. 1
    Boş sətir

    k = '' — artıq görülmüş simvollar burada toplanacaq.

  2. 2
    Dövr

    for c in s: — hər simvola bax.

  3. 3
    Yeni simvoldurmu?

    if k.count(c) == 0: (və ya if c not in k:) — yalnız hələ olmayan simvolu k = k + c ilə əlavə et.

  4. 4
    Nəticə

    print(len(k)) — müxtəlif simvolların sayı. Boşluq da simvoldur.

Python
s = 'mississippi-2026'
v = 0
d = ''
k = ''
for c in s:
    if c in 'aeiou':
        v = v + 1
    if c.isdigit():
        d = d + c
    if k.count(c) == 0:
        k = k + c
print(v, d, k, len(k))
▸ Gözlənilən nəticə
4 2026 misp-206 8
Bir dövrdə üç iş: saitlərin sayı (4), yalnız rəqəmlərdən düzələn sətir ('2026') və müxtəlif simvollar ('misp-206', 8 simvol).
Nümunə 3. Qonşu simvollar

s = 'bookkeeper' sətrində yanaşı duran eyni simvol cütlərinin sayını tapan dövr qurun. Niyə range(len(s)) yox, range(len(s) - 1) yazılmalıdır?

Həllini göstər
for i in range(len(s) - 1): və if s[i] == s[i + 1]: c = c + 1.
İndekslər: b0 o1 o2 k3 k4 e5 e6 p7 e8 r9. Cütlər: oo (1–2), kk (3–4), ee (5–6) — cavab 3.
range(len(s)) olsa, son addımda i = 9 olar və s[10] mövcud olmayan indeksdir — IndexError xətası.
Python
s = 'olympiad'
k = ''
for i in range(len(s)):
    if i % 2 == 0:
        k = k + s[i].upper()
    elif s[i] in 'aeiou':
        k = k + '*'
    else:
        k = k + s[i]
print(k, len(k))
▸ Gözlənilən nəticə
OlYmP*Ad 8
Nümunə 4-ün proqramı: əvvəl nəticəni özün tap.
Nümunə 4. DİM tipli tapşırıq: indekslər üzrə dövr

Yuxarıdakı proqramın nəticəsini müəyyən edin.
A) oLyMpIaD 8 B) OlYmPiAd 8 C) OLYMPIAD 8 D) OlYmP*Ad 8 E) *lYmP**d 8

Həllini göstər
İndekslər: o0 l1 y2 m3 p4 i5 a6 d7.
Cüt indeksli simvollar (0, 2, 4, 6) böyük hərfə çevrilir: O, Y, P, A. Birinci şərt doğru olanda elif yoxlanmır, ona görə a6 da 'A' olur, ulduz yox.
Tək indekslərdə: l1 — samit, qalır; m3 — qalır; i5 — sait → *; d7 — qalır.
k = 'OlYmP*Ad', uzunluğu 8. Cavab: D. Tələ: E variantı şərtlərin sırasını dəyişir — sait yoxlaması birinci olsaydı, o0 və a6 da ulduz olardı.

Ədəd və sətir: str(n) və int(s)

str(n) ədədi rəqəmlər sətrinə, int(s) isə rəqəmlər sətrini ədədə çevirir. Bu, rəqəmlərlə işləməyin ikinci yoludur (birincisi n % 10 və n // 10-dur, bax: «Ədədlər üzərində əməllər: rəqəmlər, bölənlər və sadə ədədlər»): len(str(n)) — rəqəmlərin sayı, str(n)[::-1] — tərs yazılış, str(n).count('7') — 7 rəqəminin neçə dəfə olduğu.

Python
n = 40718
t = str(n)
print(len(t), t[0], t[-1], t.count('0'))
print(int(t[::-1]), t == t[::-1])
s = 0
for c in t:
    s = s + int(c)
print(s, t + '5', n + 5)
▸ Gözlənilən nəticə
5 4 8 1
81704 False
20 407185 40723
t + '5' sətirləri birləşdirir ('407185'), n + 5 isə ədədləri toplayır (40723).
Python
a = [707, 17, 1234, 77, 470, 5]
m = 0
for x in a:
    t = str(x)
    if t.count('7') == 1:
        m = m + x
    else:
        m = m - x
print(m)
▸ Gözlənilən nəticə
-1536
Nümunə 5-in proqramı.
Nümunə 5. DİM tipli tapşırıq: str və count

Yuxarıdakı proqramın nəticəsini müəyyən edin.
A) 1536 B) 487 C) −1536 D) −1459 E) −2006

Həllini göstər
7 rəqəmi düz bir dəfə olan ədədlər əlavə olunur, qalanları çıxılır:
707 — iki dəfə → −707; 17 — bir dəfə → +17; 1234 — yoxdur → −1234; 77 — iki dəfə → −77; 470 — bir dəfə → +470; 5 → −5.
m = −707 + 17 − 1234 − 77 + 470 − 5 = −1536. Cavab: C.

split və join: bir sətirdə verilən elementlər

Yazılı tapşırıqlarda elementlər çox vaxt bir sətirdə, boşluqla ayrılmış halda daxil edilir: b = input(), sonra a = b.split(' '). Nəticə sətirlərdən ibarət siyahıdır: i-ci elementin ilk simvolu a[i][0], sonuncusu a[i][-1] (və ya a[i][len(a[i]) - 1]), uzunluğu len(a[i])-dir; ədəd kimi lazımdırsa, int(a[i]) yazılır. İndekslərin cəmi soruşulursa, dövr indekslər üzrə qurulur.

Python
b = 'ada 7x7 radar 45 noon ab'
a = b.split(' ')
k = 0
s = 0
for i in range(len(a)):
    if a[i][0] == a[i][-1]:
        k = k + 1
        s = s + i
print(a)
print(k, s)
print('-'.join(a[:3]))
▸ Gözlənilən nəticə
['ada', '7x7', 'radar', '45', 'noon', 'ab']
4 7
ada-7x7-radar
İlk və son simvolu eyni olan elementlər: 4 ədəd, indekslərinin cəmi 0 + 1 + 2 + 4 = 7. İmtahanda birinci sətir b = input() olur.
Nümunə 6. Sətirdən ədədlər

Klaviaturadan 10 205 3 4400 17 sətri daxil edilir. Sonu 0 rəqəmi ilə bitən elementlərin sayını, onların cəmini (ədəd kimi) və indekslərinin cəmini tapın.

Həllini göstər
a = ['10', '205', '3', '4400', '17']. Şərt: a[i][-1] == '0'.
i = 0: '10' — uyğundur; i = 3: '4400' — uyğundur; qalanları 5, 3, 7 ilə bitir.
Say: 2; cəm: int('10') + int('4400') = 4410; indekslərin cəmi: 0 + 3 = 3.
Diqqət: '10' + '4400' isə '104400' sətrini verərdi.
Tapşırıq

s = 'informatics' sətrindəki müxtəlif simvolların sayını və bu simvollardan (ilk rast gəlinmə sırası ilə) düzələn sətri bir sətirdə, boşluqla çap edin.

Tapşırıq · Python
s = 'informatics'
k = ''
# collect the distinct characters in k

print(len(k), k)
▸ Gözlənilən nəticə
10 informatcs
Tapşırıq

line = '31 405 7 1234 56 800' sətrindəki ədədlərdən birinci rəqəmi sonuncu rəqəmindən böyük olanların cəmini çap edin.

Tapşırıq · Python
line = '31 405 7 1234 56 800'
a = line.split(' ')
total = 0
# loop over a here

print(total)
▸ Gözlənilən nəticə
831

Əsas fikirlər

  • İndeks soldan 0-dan, sağdan −1-dən başlayır; s[a:b:c] kəsiyində b daxil deyil, s[::-1] sətri tərsinə çevirir.
  • Sətir dəyişməzdir: metodlar yeni sətir qaytarır, ona görə nəticə s = s.upper() kimi yenidən mənimsədilir.
  • count sayır (üst-üstə düşmədən), find axtarır (tapmasa −1), replace əvəz edir, isdigit rəqəmləri yoxlayır.
  • Müxtəlif simvollar: k = '', for c in s:, if k.count(c) == 0: k = k + c, sonda len(k).
  • b.split(' ') sətirlər siyahısı verir: a[i][0], a[i][-1], int(a[i]); str(n) və int(s) ədəd ilə sətir arasında körpüdür.

Özünü yoxla

12 sual. Hər düzgün cavab XP qazandırır.

1 / 12
s = 'python' olduqda s[-1] nədir?