Məzmuna keç
Educora
Orta8-ci sinif24 dəq30 / 59

Şərt operatoru: if, elif, else və mürəkkəb şərtlər

Müqayisə əməlləri, tam və natamam şərt operatoru, `elif` zənciri, iç-içə şərtlər, `and`, `or`, `not` və qalıqla qurulan şərtlər — DİM tipli izləmə, «neçə dəfə `Yes`?» və yazılı proqram tapşırıqları ilə.

Özünü yoxla
Bu dərsdə öyrənəcəksən
  • Müqayisə əməllərinin və sətir müqayisəsinin nəticəsini (True / False) müəyyən etmək.
  • Tam və natamam şərt operatorunu, elif zəncirini və iç-içə şərtləri yazmaq və hansı budağın icra olunduğunu izləmək.
  • and, or, not ilə mürəkkəb şərtləri prioritetə uyğun hesablamaq.
  • Qalıq şərtləri (n % k) ilə dövri naxış məsələlərini həll edən proqram yazmaq.

Bankomat PIN kodu düzgün yığılanda pul verir, səhv yığılanda xəbərdarlıq edir; svetoforda yaşıl işıqda keçirik, qırmızıda dayanırıq. Proqram da vəziyyətə görə seçim etməlidir. Blok-sxemdə bu, romb fiquru ilə göstərilən budaqlanmadır (bax: «Alqoritmlər və blok-sxemlər» və «Budaqlanan alqoritmlər»), Python-da isə şərt operatoru if ilə yazılır. DİM-in 2025–2026-cı illərdəki hər variantında «Şərt operatoru» mövzusuna 2–3 tapşırıq düşüb, bəzən onlardan biri yazılı proqram olub.

Müqayisə əməlləri: şərt nə vaxt doğrudur?

Şərt qiyməti True (doğru) və ya False (yalan) olan ifadədir. Ən sadə şərtlər müqayisə əməlləri ilə qurulur. Diqqət: bərabərlik iki bərabərlik işarəsi ilə yazılır — ==, çünki tək = mənimsətmədir.

ƏməlMənasıNümunə
==bərabərdir7 == 7 → True
!=bərabər deyil7 != 7 → False
< >kiçikdir, böyükdür3 > 8 → False
<= >=kiçik və ya bərabər, böyük və ya bərabər8 >= 8 → True

Sətirlər simvol-simvol, simvolların kodlarına görə müqayisə olunur — lüğətdəki sözlər kimi: 'apple' < 'apricot' doğrudur, çünki üçüncü simvolda p hərfi r-dən əvvəl gəlir. Böyük hərflərin kodları kiçik hərflərinkindən kiçikdir, ona görə 'Z' < 'a' də doğrudur. Rəqəmlərdən ibarət sətirlər də simvol-simvol müqayisə olunur: '10' < '9' doğrudur ('1' < '9'), halbuki 10 > 9. Ədəd isə sətirlə heç vaxt bərabər olmur: 5 == '5' → False. Python ikiqat bərabərsizliyə də icazə verir: 10 <= n <= 99 yazılışı «n ikirəqəmli ədəddir» deməkdir.

Şərtin qiyməti adi qiymətdir: onu çap etmək (print(7 > 3) → True) və dəyişənə yazmaq olar: even = n % 2 == 0. Burada əvvəl n % 2 == 0 müqayisəsi hesablanır, sonra True və ya False even dəyişəninə mənimsədilir; sonra sadəcə if even: yazmaq kifayətdir. Uzun şərtləri belə hissələrə bölmək proqramı oxunaqlı edir.

Tam və natamam şərt operatoru

Tərif
Natamam və tam şərt operatoru

Natamam şərt operatoru yalnız if hissəsindən ibarətdir: şərt doğrudursa, blok icra olunur, yalandırsa, heç nə edilmir. Tam şərt operatoru if … else şəklindədir: iki budaqdan mütləq biri icra olunur — şərt doğru olduqda if-in bloku, yalan olduqda else-in bloku.

Yazılış qaydaları: şərtdən sonra iki nöqtə (:) qoyulur, budağın əmrləri isə girinti ilə — adətən 4 boşluqla — yazılır. Eyni girintili ardıcıl sətirlər bir blok təşkil edir: girinti bitdisə, blok da bitib. else öz if-i ilə eyni girintidə yazılır. Şərt operatorundan sonra girintisiz gələn əmrlər hər iki halda icra olunur.

Python
n = 38
if n % 5 == 3:
    print(n // 5)
else:
    print(n % 5)
print('end')
▸ Gözlənilən nəticə
7
end
38 % 5 = 3, şərt doğrudur və 38 // 5 = 7 çap olunur. print('end') girintisiz olduğu üçün hər halda icra olunur. n = 41 yazıb yenidən işə sal: bu dəfə else budağı işləyəcək.
Python
x = 12
y = 5
if x % y == 2:
    y = x * 2
    print(x, y)
    x = y - x
y = y + 1
print(x, y)
▸ Gözlənilən nəticə
12 24
12 25
Nümunə 1-in proqramı.
Nümunə 1. Şərtdən sonrakı əmrlər (kodlaşdırılmış cavab)

Yuxarıdakı proqram nə çap edəcək? Hər iki sətri yazın.

Həllini göstər
x % y = 12 % 5 = 2, şərt doğrudur, blok icra olunur:
y = 12 · 2 = 24; print(x, y) → 12 24; x = 24 − 12 = 12.
Blokdan sonra girintisiz əmrlər: y = 24 + 1 = 25; print(x, y) → 12 25.
Cavab iki sətirdir: 12 24 və 12 25. Tələ: girintisiz y = y + 1-i ilkin y = 5 ilə hesablayan «12 6» yazır.

elif zənciri və iç-içə şərtlər

İkidən çox seçim olanda elif («else if» — «əks halda, əgər») işlədilir. Şərtlər yuxarıdan aşağı yoxlanır; ilk doğru şərtin budağı icra olunur və zəncirin qalan hissəsi keçilir — sonrakı şərtlər doğru olsa belə. Heç bir şərt doğru deyilsə, sondakı else icra olunur (o yoxdursa, heç nə edilmir). Buna görə şərtlərin sırası vacibdir: if n > 10 əvvəl, elif n > 100 sonra yazılsa, ikinci budaq heç vaxt işləməz.

1-ci şərtdoğrudur?Hə1-ci budaqYox2-ci şərtdoğrudur?Hə2-ci budaqYoxelse budağınövbəti əmr
if … elif … else zənciri: şərtlər yuxarıdan aşağı yoxlanır, ilk doğru şərtin budağı icra olunur, sonra proqram zəncirdən sonrakı əmrə keçir.
Python
s = 'k'
b = 'm'
if s == b:
    print('A')
elif s < b:
    print('B')
elif s == 'k':
    print('C')
else:
    print('D')
▸ Gözlənilən nəticə
B
Nümunə 2-nin proqramı. İmtahanda birinci sətir s = input() olur.
Nümunə 2. Simvol daxil edilir

Klaviaturadan k hərfi daxil edilərsə, yuxarıdakı proqram nə çap edər?
A) A B) B C) C D) D E) heç nə

Həllini göstər
s == b → 'k' == 'm' ✗.
s < b → 'k' < 'm' ✓ (əlifbada k hərfi m-dən əvvəldir) → B çap olunur.
Zəncirin qalanı yoxlanmır, halbuki s == 'k' də doğru idi. Cavab: B.

Budağın içində başqa şərt operatoru da ola bilər — bu, iç-içə şərtdir. Daxili if yalnız xarici şərt doğru olanda yoxlanır. Hansı else-in hansı if-ə aid olduğunu yalnız girinti müəyyən edir: else özü ilə eyni girintidə yazılmış ən yaxın yuxarıdakı if-ə aiddir. İmtahan proqramlarında şərtlər tez-tez 2–3 səviyyə dərinlikdə olur, ona görə izləməni sistemli apar.

  1. 1
    İlkin qiymətləri yaz

    Dəyişənləri və onların ilkin qiymətlərini (giriş qiymətləri daxil) cədvələ köçür.

  2. 2
    Şərti hesabla: ✓ və ya ✗

    Şərtdəki ifadəni cari qiymətlərlə hesabla və yanına ✓ (doğru) və ya ✗ (yalan) yaz.

  3. 3
    ✗ olsa, bloku keç

    Girintisi daha böyük olan bütün sətirləri keç və eyni girintidəki elif / else-ə, o yoxdursa, blokdan sonrakı sətrə get.

  4. 4
    ✓ olsa, bloka gir

    Əmrləri icra et, dəyişənləri yenilə, daxili şərtlər üçün 2–3-cü addımları təkrarla. Budaq icra olundusa, həmin zəncirin qalan elif / else-ləri keçilir.

  5. 5
    Sonrakı əmrləri unutma

    Şərt operatorundan sonrakı girintisiz sətirlər həmişə icra olunur — cavab çox vaxt məhz orada alınır.

Python
a = 36
b = 14
if a % b > 5:
    a = a - b
    if a > 2 * b:
        b = b + 3
    else:
        b = b - 3
        if b % 2 == 1:
            a = a + 1
else:
    a = a + b
print(a + b, a - b)
▸ Gözlənilən nəticə
34 12
Nümunə 3-ün proqramı: üç səviyyəli iç-içə şərt.
Nümunə 3. DİM tipli qapalı tapşırıq: iç-içə şərt

Yuxarıdakı proqramın nəticəsini müəyyən edin.
A) 39 5 B) 33 11 C) 34 12 D) 58 14 E) 22 11

Həllini göstər
1) a % b = 36 % 14 = 8; 8 > 5 ✓ → a = 36 − 14 = 22.
2) a > 2 · b → 22 > 28 ✗ → else budağı: b = 14 − 3 = 11.
3) Daxili şərt: b % 2 == 1 → 11 % 2 = 1 ✓ → a = 22 + 1 = 23.
4) Xarici else keçilir. print(a + b, a - b) → 23 + 11 = 34, 23 − 11 = 12.
Cavab: C) 34 12. B variantı daxili if-i unudanlara (a = 22, b = 11), A isə səhv budaq seçənlərə (b = 17) aiddir.

Mürəkkəb şərtlər: and, or, not

Bir neçə şərt məntiq əməlləri ilə birləşdirilir: and (və) hər iki şərt doğru olanda doğrudur; or (və ya) ən azı biri doğru olanda doğrudur; not (deyil) şərtin qiymətini tərsinə çevirir. Bunlar «Məntiq əməliyyatları və məntiq elementləri» dərsindəki konyunksiya, dizyunksiya və inversiyadır.

ABA and BA or Bnot A
TrueTrueTrueTrueFalse
TrueFalseFalseTrueFalse
FalseTrueFalseTrueTrue
FalseFalseFalseFalseTrue
hesab əməlləri → == != < > <= >= → not → and → or

Prioritet soldan sağa azalır: əvvəl hesab əməlləri, sonra müqayisələr, sonra not, and və ən axırda or. Şübhə olanda mötərizə qoy — proqram həm düzgün, həm də oxunaqlı olur.

Aralıqlar üçün hazır qəliblər: x-in [10; 20] parçasında olması — 10 <= x <= 20 (yəni x >= 10 and x <= 20); parçadan kənarda olması — x < 10 or x > 20, bu da not (10 <= x <= 20) ilə eynidir. Diqqət et: «kənarda» şərtində and yazmaq səhvdir — heç bir ədəd eyni vaxtda həm 10-dan kiçik, həm də 20-dən böyük ola bilməz, belə şərt həmişə yalandır.

Nümunə 4. Prioritet fərq yaradır

x = 7, y = 2 olduqda hesablayın: 1) x > 5 or y > 3 and x < 0; 2) not x > 5 and y == 2; 3) (x > 5 or y > 3) and x < 0.

Həllini göstər
1) Əvvəl and: y > 3 and x < 0 → ✗ and ✗ = False; sonra x > 5 or False → ✓ or ✗ = True.
2) not müqayisədən sonra, and-dən əvvəl icra olunur: not (7 > 5) = not True = False; False and … = False.
3) Mötərizə əvvəl: x > 5 or y > 3 = True; True and x < 0 = ✓ and ✗ = False.
1-ci və 3-cü ifadələr yalnız mötərizə ilə fərqlənir, nəticələri isə əksdir.
Nümunə 5. Neçə dəfə «Yes» çap olunar?

Proqram 10 dəfə ardıcıl icra olunur və hər dəfə klaviaturadan (s, t) cütü daxil edilir: (9, 4); (9, 6); (2, 5); (−1, 3); (8, 8); (0, 0); (12, 9); (−5, −5); (7, 1); (10, 11). Neçə dəfə Yes çap olunar? (DİM tapşırıqlarında adətən «Bəli» / «Xeyr» sözləri çap olunur.)
s = int(input())
t = int(input())
if s >= 8 and t % 3 != 0 or s < 0:
    print('Yes')
else:
    print('No')

Həllini göstər
and or-dan əvvəl icra olunduğu üçün şərt belə oxunur: (s >= 8 and t % 3 != 0) or s < 0.
• s < 0 olan cütlər dərhal Yes verir: (−1, 3), (−5, −5) — 2 cüt.
• Qalanlarda s ≥ 8 olmalı və t 3-ə bölünməməlidir: (9, 4) ✓, (9, 6) ✗ (6 % 3 = 0), (8, 8) ✓, (12, 9) ✗ (9 % 3 = 0), (10, 11) ✓ — 3 cüt.
• (2, 5), (0, 0), (7, 1)-də s < 8 → No.
Cəmi: 2 + 3 = 5.
Python
pairs = [(9, 4), (9, 6), (2, 5), (-1, 3), (8, 8),
         (0, 0), (12, 9), (-5, -5), (7, 1), (10, 11)]
count = 0
for s, t in pairs:
    if s >= 8 and t % 3 != 0 or s < 0:
        count = count + 1
print(count)
▸ Gözlənilən nəticə
5
Yoxlama: burada for dövrü (növbəti dərs) eyni şərti 10 cütün hər biri üçün yoxlayır və Yes cavablarını sayır.
Python
x = 3
y = 5
if x * y > 15:
    print('#')
elif y ** x != 125:
    print('# #')
else:
    print('# # # #')
if y // x == 1:
    print('# # #')
▸ Gözlənilən nəticə
# # # #
# # #
Nümunə 6-nın proqramı.
Nümunə 6. Çap olunan simvolları saymaq

Yuxarıdakı proqram icra olunduqdan sonra neçə # simvolu çap olunar?
A) 1 B) 3 C) 4 D) 7 E) 10

Həllini göstər
Birinci şərt operatoru: x · y = 15, 15 > 15 ✗; elif: 5 ** 3 = 125, 125 != 125 ✗ → else: # # # # (4 simvol).
İkinci, müstəqil if: y // x = 5 // 3 = 1, 1 == 1 ✓ → # # # (3 simvol).
Cəmi D) 7. İkinci if ayrıca operatordur və birincinin nəticəsindən asılı olmayaraq yoxlanır.

Qalıqla qurulan şərtlər və yazılı tapşırıq

İmtahanın ən sevimli şərtləri qalıqla qurulur. Onları bir baxışda tanımaq lazımdır:

  • n % 2 == 0 — n cütdür; n % 2 == 1 — n təkdir;
  • n % k == 0 — n k-ya bölünür; n % k != 0 — bölünmür;
  • n % 10 == 7 — son rəqəm 7-dir; n // 10 % 10 == 3 — onluqlar rəqəmi 3-dür;
  • n % 3 == 0 and n % 5 == 0 — n 15-ə bölünür;
  • dövri naxış: nə isə hər k addımdan bir təkrarlanırsa, n % k n-in naxışdakı yerini göstərir.

Sonuncu fikri yazılı tapşırıqda tətbiq edək. Natural ədədlər 4 sütunlu cədvələ «ilan» kimi yazılıb: tək nömrəli sətirlərdə soldan sağa, cüt nömrəli sətirlərdə sağdan sola.

ABCD
1234
8765
9101112
16151413
…………
Nümunə 7. Yazılı tapşırıq: ədəd hansı sütundadır?

Klaviaturadan daxil edilmiş natural n ədədinin (1 ≤ n ≤ 1000) yuxarıdakı cədvəlin hansı sütununda olduğunu müəyyən edən proqramı Python dilində yazın. Məsələn: giriş 6 → çıxış C; 13 → D; 16 → A; 26 → B.

Həllini göstər
1) Naxış hər 8 ədəddən bir təkrarlanır (iki sətir = 8 xana), ona görə r = n % 8 qalığına baxırıq.
2) İlk iki sətirdən qalıqların yerini oxuyuruq: r = 1 → A, 2 → B, 3 → C, 4 → D, 5 → D, 6 → C, 7 → B, 0 → A (8, 16, 24, … A sütunundadır).
3) Qruplaşdırırıq: A — r = 0 və ya 1; B — 2 və ya 7; C — 3 və ya 6; D — qalan 4 və 5.
4) Bunu if … elif … else zəncirinə çeviririk (proqram aşağıdadır). Yoxlama: 26 % 8 = 2 → B ✓, 13 % 8 = 5 → D ✓.
Python
n = 26
r = n % 8
if r == 0 or r == 1:
    print('A')
elif r == 2 or r == 7:
    print('B')
elif r == 3 or r == 6:
    print('C')
else:
    print('D')
▸ Gözlənilən nəticə
B
Yazılı tapşırığın həlli. Cavab vərəqində birinci sətir n = int(input()) olmalıdır; burada brauzerdə işləsin deyə n = 26 yazdıq. 6, 13, 16 ilə də yoxla.

Yazılı tapşırıqda tam proqram yazılır: giriş (int(input())), hesablama (burada qalıq və şərtlər) və çıxış (print). DİM yazılı tapşırıqların qiymətləndirmə meyarlarını dərc etmir, ona görə hər hissəni aydın yaz və cavabı nümunə cədvəlindəki bütün hallarla, həm də «sərhəd» qiymətləri ilə (burada 8, 16 kimi qalığı 0 olan ədədlərlə) öz proqramında addım-addım yoxla.

Tapşırıq

Svetofor dövri işləyir: hər 60 saniyənin ilk 30 saniyəsi yaşıl (green), sonrakı 5 saniyəsi sarı (yellow), qalan 25 saniyəsi qırmızı (red) yanır; sayma 0-cı saniyədən başlayır. if … elif … else yaz ki, proqram hər an üçün rəngi çap etsin (verilmiş anları gəzən for dövrü hazırdır).

Tapşırıq · Python
for t in [10, 33, 50, 1000, 1234]:
    r = t % 60
    colour = '?'
    # choose the colour with if / elif / else
    print(t, colour)
▸ Gözlənilən nəticə
10 green
33 yellow
50 red
1000 red
1234 yellow
Tapşırıq

İl 4-ə bölünürsə, amma 100-ə bölünmürsə, və ya 400-ə bölünürsə, o uzun ildir (366 gün). leap dəyişəninə False əvəzinə bu mürəkkəb şərti yaz ki, proqram dörd il üçün düzgün cavab çap etsin.

Tapşırıq · Python
for y in [2024, 2100, 2000, 2026]:
    leap = False  # write the condition here
    if leap:
        print(y, 'Yes')
    else:
        print(y, 'No')
▸ Gözlənilən nəticə
2024 Yes
2100 No
2000 Yes
2026 No

Əsas fikirlər

  • Şərt True və ya False qiymətli ifadədir: bərabərlik ==, bərabərsizlik !=; sətirlər simvol-simvol, kodlara görə müqayisə olunur ('10' < '9').
  • Natamam if-də budaq icra oluna da bilər, olunmaya da; tam if … else-də iki budaqdan mütləq biri icra olunur. Blok girinti ilə müəyyən olunur.
  • if … elif … else zəncirində yalnız ilk doğru şərtin budağı icra olunur; ayrı-ayrı if-lərin hər biri ayrıca yoxlanır.
  • Prioritet: hesab → müqayisə → not → and → or; şübhə olanda mötərizə qoy.
  • Cüt/tək, bölünmə və dövri naxışlar (sütunlar, günlər, svetofor) n % k qalığı ilə budaqlara bölünür.

Özünü yoxla

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

1 / 12
Python-da iki qiymətin bərabərliyini hansı əməl yoxlayır?