- 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,joinmetodları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
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.
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' | P | Y | T | H | O | N |
|---|---|---|---|---|---|---|
| indeks | 0 | 1 | 2 | 3 | 4 | 5 |
| mənfi indeks | −6 | −5 | −4 | −3 | −2 | −1 |
s[1] və s[-5] eyni simvoldur — 'Y'.- 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.
- 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.
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
'programming' sətrində 11 simvol var, indekslər 0…10.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ərHəllini gizlət
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əl | Nə edir | Nümunə | Nəticə |
|---|---|---|---|
len(s) | simvolların sayı | len('banana') | 6 |
+, * | birləşdirmə, təkrar | 'ab' + 'c', 'ab' * 3 | 'abc', 'ababab' |
in | alt 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' |
split və join siyahılarla işləyir — bax: «Siyahılar və onlar üzərində əməllər».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.
s = 'abracadabra'
k = s.count('a') + s.find('c')
t = s[k:] + s[:2]
print(t)▸ Gözlənilən nəticə
raab
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ərHəllini gizlət
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.
- 1Boş sətir
k = ''— artıq görülmüş simvollar burada toplanacaq. - 2Dövr
for c in s:— hər simvola bax. - 3Yeni simvoldurmu?
if k.count(c) == 0:(və yaif c not in k:) — yalnız hələ olmayan simvoluk = k + cilə əlavə et. - 4Nəticə
print(len(k))— müxtəlif simvolların sayı. Boşluq da simvoldur.
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
'2026') və müxtəlif simvollar ('misp-206', 8 simvol).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ərHəllini gizlət
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ı.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
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ərHəllini gizlət
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.
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).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
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ərHəllini gizlət
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.
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
b = input() olur.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ərHəllini gizlət
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.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.
s = 'informatics'
k = ''
# collect the distinct characters in k
print(len(k), k)▸ Gözlənilən nəticə
10 informatcs
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.
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. countsayır (üst-üstə düşmədən),findaxtarır (tapmasa −1),replaceəvəz edir,isdigitrəqəmləri yoxlayır.- Müxtəlif simvollar:
k = '',for c in s:,if k.count(c) == 0: k = k + c, sondalen(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.
s = 'python' olduqda s[-1] nədir?