Python-da şərti if ifadəsi. Sintaksis, else/elif blokları, nümunələr

Proqramlaşdırmanı öyrənmək prosesində çox vaxt real həyatda tətbiqi o qədər də asan olmayan proqramlar yaratmaq lazımdır. Axı, zaman-zaman yalnız müəyyən şərtlər altında təlimatlara əməl etməlisiniz. Bunu proqramda həyata keçirmək üçün bütün dillərdə nəzarət ifadələri var. Onların köməyi ilə yalnız müəyyən bir şərt doğru olduqda kodun icrası, döngələr yaratmaq və ya müəyyən hərəkətləri yerinə yetirmək axınına nəzarət edə bilərsiniz.

Bu gün biz mövcud vəziyyəti müəyyən bir şərt üçün yoxlayan və bu məlumatlara əsaslanaraq sonrakı hərəkətlər haqqında qərarlar qəbul edən if bəyanatı haqqında danışacağıq.

Nəzarət bəyanatlarının növləri

Ümumiyyətlə, əgər proqramın hərəkətinə nəzarət edən yeganə ifadə deyil. Eləcə də özü də daha böyük operatorlar zəncirinin tərkib hissəsi ola bilər.

Onun icrası prosesinə nəzarət edən döngələr və ifadələr də var. Bu gün biz yalnız şərti operator və onun iştirak edə biləcəyi zəncirlər haqqında danışacağıq.

Proqramlaşdırmada budaqlanma kimi bir şey var. Məhz bu, yalnız müəyyən bir şərt doğru olduqda yerinə yetirilən əmrlər ardıcıllığı deməkdir. Meyarların özləri fərqli ola bilər:

  1. Dəyişənin müəyyən bir dəyərə bərabərliyi.
  2. Müəyyən bir hərəkətin həyata keçirilməsi.
  3. Tətbiq vəziyyəti (yıxılıb və ya yox).

Spektr daha böyük ola bilər. Şərti ifadələr bir neçə növdə olur:

  1. Bir filialla. Yəni tək yoxlama aparılır, bunun nəticəsində müəyyən hərəkətlər həyata keçirilir.
  2. İki və ya daha çox filial ilə. 1-ci meyar doğrudursa, meyar 2-ni yoxlayın. Əgər doğrudursa, 3-ü yoxlayın. Beləliklə, tələb olunan qədər yoxlayın.
  3. Bir neçə şərtlə. Burada hər şey sadədir. Tərcüməçi çoxlu şərtləri və ya onlardan birini yoxlayır.

if ifadəsi

if ifadəsinin strukturu bütün dillərdə oxşardır. Bununla belə, Python-da onun sintaksisi digərlərindən bir qədər fərqlidir:

şərt olarsa:

    <входящее выражение 1>

    <входящее выражение 2>

<не входящее выражение>

Əvvəlcə operatorun özü elan edilir, bundan sonra onun işləməyə başlama şərti yazılır. Şərt doğru və ya yalan ola bilər.

Bunun ardınca əmrləri olan bir blok gəlir. Əgər o, dərhal yerinə yetirilməli olan meyara əməl edərsə, o zaman müvafiq əmrlər ardıcıllığı if bloku adlanır. Orada istənilən sayda əmrlərdən istifadə edə bilərsiniz.

Diqqət! Bütün if blok əmrləri daxilindəki abzas eyni ölçüdə olmalıdır. Blok sərhədləri girintilərlə müəyyən edilir. 

Dil sənədlərinə görə, girinti 4 boşluqdur. 

Bu operator necə işləyir? Tərcüməçi if sözünü görəndə dərhal ifadəni istifadəçinin müəyyən etdiyi meyarlara uyğun yoxlayır. Əgər belədirsə, o zaman göstərişlər axtarmağa və onlara əməl etməyə başlayır. Əks halda, bu blokun bütün əmrləri atlanır.

Şərtdən sonrakı ifadə girintili deyilsə, o, if bloku kimi qəbul edilmir. Bizim vəziyyətimizdə bu xəttdir . Buna görə də, yoxlamanın nəticəsindən asılı olmayaraq, bu xətt icra ediləcəkdir.

Bu operatorun necə işlədiyinə dair bir nümunə üçün kod parçasıdır.

sayı = int(input("Nömrə daxil edin:"))

rəqəm > 10 olarsa:

    çap ("Sayı 10-dan böyükdür")

Bu proqram istifadəçidən nömrə tələb edir və onun 10-dan çox olub olmadığını yoxlayır. Əgər belədirsə, o, müvafiq məlumatı qaytarır. Məsələn, əgər istifadəçi 5 rəqəmini daxil edərsə, o zaman proqram sadəcə başa çatacaq, vəssalam.

Ancaq 100 rəqəmini göstərsəniz, tərcüməçi onun ondan artıq olduğunu başa düşəcək və xəbər verəcəkdir.

Diqqət! Bizdə isə şərt yalnışdırsa, proqram dayanır, çünki göstərişdən sonra heç bir əmr verilmir.

Yuxarıdakı kodda yalnız bir əmr var. Ancaq onlardan daha çoxu var. Yeganə tələb abzasdır.

İndi bu əmrlər ardıcıllığını təhlil edək.

number = int(input("Nömrə yazın:"))

rəqəm > 10 olarsa:

    çap (“birinci sətir”)

    çap (“ikinci sətir”)

    çap (“üçüncü sətir”)

çap ("Daxil edilmiş nömrədən asılı olmayaraq icra olunan sətir")

çap (“Tətbiqi bitir”)

2, 5, 10, 15, 50 dəyərlərini daxil etsəniz, nəticənin nə olacağını təxmin etməyə çalışın.

Gördüyünüz kimi, əgər istifadəçinin daxil etdiyi nömrə ondan artıqdırsa, onda üç sətir + biri “Hər dəfə işlət...” və bir “Son” mətni, ondan azdırsa, onda yalnız bir sətir çıxır. fərqli mətn. Doğrudursa, yalnız 3,4,5-ci sətirlər yerinə yetiriləcək. Bununla belə, istifadəçinin hansı nömrə göstərməsindən asılı olmayaraq, son iki sətir yazılacaq.

İfadələri birbaşa konsolda istifadə etsəniz, nəticə fərqli olacaq. Tərcüməçi, yoxlama meyarını təyin etdikdən sonra Enter düyməsini sıxarsa, dərhal çox xətt rejimini işə salır.

Tutaq ki, biz aşağıdakı əmrlər ardıcıllığını yazdıq.

>>>

>>> n = 100

>>> əgər n > 10:

...

Bundan sonra >>> işarəsinin ellipsis ilə əvəz olunduğunu görəcəyik. Bu o deməkdir ki, çoxsətirli giriş rejimi aktivdir. Sadə sözlə, Enter düyməsini sıxsanız, təlimatın ikinci mərhələsinin girişinə köçürüləcəksiniz. 

Və bu blokdan çıxmaq üçün bloka daha bir tikinti əlavə etmək lazımdır if.

>>>

>>> n = 100

>>> əgər n > 10:

… çap (“nv 10”)

...

Şərt doğru deyilsə, proqram başa çatır. Bu problemdir, çünki istifadəçi belə bir proqramı uğursuzluq səbəbindən bağlanmış kimi qəbul edə bilər. Ona görə də istifadəçiyə rəy bildirmək lazımdır. Bunun üçün bir keçid istifadə olunur Əgər.

ifadə operatoru Əgər

Bu operator sizə keçidi həyata keçirməyə imkan verir: ifadə müəyyən qaydaya uyğun gəlirsə, bu hərəkətləri yerinə yetirin, yoxsa, başqaları. Yəni, proqramın axınını iki yola bölməyə imkan verir. Sintaksis intuitivdir:

şərt olarsa:

    # əgər blok

    bəyanat 1

    bəyanat 2

    və s.

başqa:

    # başqa blok

    bəyanat 3

    bəyanat 4

    və sair:

Bu operatorun necə işlədiyini izah edək. Birincisi, standart ifadə iplikdə yerinə yetirilir yew, uyğun olub olmadığını yoxlayır vəziyyəti "doğru və ya yanlış". Sonrakı hərəkətlər yoxlamanın nəticələrindən asılıdır. Əgər doğrudursa, şərtdən sonra göstərişlər ardıcıllığında olan göstəriş birbaşa yerinə yetirilir. yew, əgər yalandırsa, onda daha

Bu şəkildə səhvləri idarə edə bilərsiniz. Məsələn, istifadəçi radius daxil etməlidir. Aydındır ki, bu, yalnız artı işarəsi olan bir nömrə ola bilər və ya sıfır dəyərdir. 0-dan azdırsa, müsbət nömrə daxil etməyinizi xahiş edən bir mesaj göndərməlisiniz. 

Budur, bu tapşırığı həyata keçirən kod. Ancaq burada bir səhv var. Hansı birini təxmin etməyə çalışın. 

radius = int(input("Radius daxil edin:"))

radius >= 0 olarsa:

    çap ("Çevrə = ", 2 * 3.14 * radius)

    çap(“Sahə = “, 3.14 * radius ** 2)

    başqa:

        çap ("Zəhmət olmasa müsbət rəqəm daxil edin")

Abzas uyğunsuzluğu xətası. Əgər və Başqa onsuz və ya eyni sayda (iç-içə olub-olmamasından asılı olaraq) yerləşməlidir.

Başqa bir istifadə halını verək (burada operatorun düzülüşü ilə hər şey düzgün olacaq) – parolu yoxlayan proqram elementi.

parol = daxil edin ("Şifrəni daxil edin:")

əgər parol == «sshh»:

    çap (“Xoş gəlmisiniz”)

başqa:

    çap (“Giriş rədd edildi”)

Parol sshh olarsa, bu təlimat şəxsi daha da ötür. Hərflərin və rəqəmlərin hər hansı başqa birləşməsi varsa, o zaman "Giriş rədd edildi" mesajını göstərir.

ifadə-ifadə if-elif-else

Yalnız bir neçə şərt doğru deyilsə, blokda olan ifadə yerinə yetirilir. daha. Bu ifadə belə işləyir.

əgər şərt_1:

    # əgər blok

    bəyanat

    bəyanat

    daha çox bəyanat

elif şərt_2:

    # ilk elif bloku

    bəyanat

    bəyanat

    daha çox bəyanat

elif şərt_3:

    # ikinci elif bloku

    bəyanat

    bəyanat

    daha çox bəyanat

...

daha

    bəyanat

    bəyanat

    daha çox bəyanat

İstənilən sayda əlavə şərtlər təyin edə bilərsiniz.

İç-içə ifadələr

Çoxlu şərtləri həyata keçirməyin başqa bir yolu if blokuna əlavə vəziyyət yoxlamaları daxil etməkdir.

Operator if başqa bir vəziyyət blokunun içərisində

gre_score = int(input("Cari kredit limitinizi daxil edin"))

per_grad = int(input("Kredit reytinqinizi daxil edin:"))

əgər hər_grad > 70:

    # xarici if bloku

        gre_score > 150 olarsa:

            # daxili if bloku

    çap (“Təbrik edirəm, kredit aldınız”)

başqa:

    çap (“Bağışlayın, siz kredit üçün uyğun deyilsiniz”)

Bu proqram kredit reytinqini yoxlayır. 70-dən azdırsa, proqram istifadəçinin kredit üçün uyğun olmadığını bildirir. Əgər daha böyükdürsə, cari kredit limitinin 150-dən çox olub-olmadığını yoxlamaq üçün ikinci yoxlama aparılır. Əgər belədirsə, kreditin verildiyi barədə mesaj göstərilir.

Hər iki dəyər yanlışdırsa, istifadəçinin kredit almaq imkanının olmadığı mesajı göstərilir. 

İndi həmin proqramı bir az yenidən işləyək.

gre_score = int(input("Cari limiti daxil edin:"))

per_grad = int(input("Kredit hesabını daxil edin:"))

əgər hər_grad > 70:

    gre_score > 150 olarsa:

        çap (“Təbrik edirəm, kredit aldınız”)

    başqa:

        çap ("Kredit limitiniz azdır")

başqa:

    çap (“Bağışlayın, siz kredit üçün uyğun deyilsiniz”)

Kodun özü çox oxşardır, lakin iç-içədir if ondan şərtin yalan olduğu ortaya çıxdıqda alqoritmi də təqdim edir. Yəni, kartdakı limit kifayət deyil, lakin kredit tarixçəsi yaxşıdır, “Kredit reytinqiniz aşağıdır” mesajı göstərilir.

şərt daxilində if-else ifadəsi daha

Test ballarına əsasən şagirdin qiymətini müəyyən edən başqa bir proqram hazırlayaq.

xal = int(input("Xalınızı daxil edin:"))

xal >= 90 olarsa:

    çap (“Əla! Qiymətiniz A”)

başqa:

    xal >= 80 olarsa:

çap (“Əla! Qiymətiniz B”)

    başqa:

xal >= 70 olarsa:

    çap (“Yaxşı! Qiymətiniz C”)

başqa:

    xal >= 60 olarsa:

çap ("Qiymətiniz D-dir. Materialı təkrarlamağa dəyər.")

    başqa:

çap ("Sən imtahandan keçdin")

Tətbiq əvvəlcə balın 90-dan böyük və ya bərabər olub olmadığını yoxlayır. Bəli, onda A qiymətini qaytarır. Bu şərt yanlışdırsa, sonrakı yoxlamalar aparılır. İlk baxışdan alqoritmin demək olar ki, eyni olduğunu görürük. Buna görə içəri yoxlamaq əvəzinə daha kombinasiyadan istifadə etmək daha yaxşıdır if-elif-else.

Beləliklə, operator if çox vacib funksiyanı yerinə yetirir – o, müəyyən kod hissələrinin yalnız ehtiyac olduqda yerinə yetirilməsini təmin edir. Proqramlaşdırmanı onsuz təsəvvür etmək mümkün deyil, çünki ən sadə alqoritmlər belə “sola getsən, taparsan, sağa getsən, bunu və bunu etməlisən” kimi çəngəllər tələb edir.

Cavab yaz