Умоўны аператар if у Python. Сінтаксіс, блокі else/elif, прыклады

У працэсе навучання праграмаванню часта ўзнікае неабходнасць ствараць праграмы, якія не так проста прымяніць у рэальным жыцці. У рэшце рэшт, час ад часу вы павінны выконваць інструкцыі толькі пры пэўных умовах. Каб мець магчымасць рэалізаваць гэта ў праграме, усе мовы маюць кантрольныя аператары. З іх дапамогай можна кіраваць патокам выканання кода, ствараючы цыклы або выконваючы пэўныя дзеянні толькі пры выкананні пэўнага ўмовы.

Сёння мы пагаворым аб аператары if, які правярае бягучую сітуацыю на пэўнае ўмова і на аснове гэтай інфармацыі прымае рашэнні аб далейшых дзеяннях.

Віды кантрольных заяваў

Увогуле, if - не адзіны аператар, які кіруе ходам праграмы. А таксама ён сам можа быць кампанентам большай ланцужкі аператараў.

Ёсць таксама цыклы і аператары, якія кіруюць працэсам яго выканання. Сёння гаворка пойдзе толькі аб умоўным аператары і ланцужках, у якіх ён можа ўдзельнічаць.

У праграмаванні ёсць такое паняцце, як разгалінаванне. Менавіта гэта азначае паслядоўнасць каманд, якая выконваецца толькі пры выкананні пэўнай умовы. Самі крытэрыі могуць быць рознымі:

  1. Роўнасць зменнай пэўнаму значэнню.
  2. Выкананне пэўнага дзеяння.
  3. Стан прыкладання (згорнута ці не).

Спектр можа быць значна большым. Умоўныя аператары бываюць некалькіх тыпаў:

  1. З адной галінкай. Гэта значыць праводзіцца аднаразовая праверка, у выніку якой выконваюцца пэўныя дзеянні.
  2. З двума і больш галінамі. Калі праўдзівы крытэрый 1, то праверце крытэрый 2. Калі праўдзівы, то праверце 3. І таму выканайце столькі праверак, колькі патрэбна.
  3. З некалькімі ўмовамі. Тут усё проста. Інтэрпрэтатар правярае некалькі ўмоў або адно з іх.

калі заява

Структура аператара if падобная ва ўсіх мовах. Аднак у Python яго сінтаксіс некалькі адрозніваецца ад усіх астатніх:

калі ўмова:

    <входящее выяўленне 1>

    <входящее выяўленне 2>

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

Спачатку аб'яўляецца сам аператар, пасля чаго пішацца ўмова, пры якім ён пачынае працаваць. Умова можа быць праўдзівым або ілжывым.

Затым ідзе блок з камандамі. Калі ён ідзе непасрэдна за крытэрыем, які павінен быць выкананы, то адпаведная паслядоўнасць каманд называецца блокам if. У ім можна выкарыстоўваць любую колькасць каманд.

Увага! Водступ ва ўсіх камандах блока if павінен быць аднолькавага памеру. Межы блока вызначаюцца водступамі. 

Згодна з моўнай дакументацыяй, водступ складае 4 інтэрвалы. 

Як працуе гэты аператар? Калі інтэрпрэтатар бачыць слова if, ён неадкладна правярае выраз на адпаведнасць зададзеным карыстальнікам крытэрам. Калі гэта так, то ён пачынае шукаць інструкцыі і выконваць іх. У адваротным выпадку ўсе каманды з гэтага блока прапускаюцца.

Калі аператар пасля ўмовы не мае водступу, ён не разглядаецца як блок if. У нашай сітуацыі такая лінія ёсць . Такім чынам, незалежна ад выніку праверкі, гэты радок будзе выкананы.

Вось фрагмент кода для прыкладу таго, як працуе гэты аператар.

лік = int(input(“Увядзіце лік: “))

калі лік> 10:

    print(“Лік больш за 10”)

Гэтая праграма запытвае ў карыстальніка лік і правярае, ці большы ён за 10. Калі так, то вяртае адпаведную інфармацыю. Напрыклад, калі карыстальнік увядзе лічбу 5, то праграма проста скончыцца, і ўсё.

Але калі ўказаць лік 100, то перакладчык зразумее, што гэта больш за дзесяць, і паведаміць гэта.

Увага! У нашым выпадку, калі ўмова ілжывая, праграма спыняецца, таму што пасля інструкцыі не даецца каманда.

У прыведзеным вышэй кодзе ёсць толькі адна каманда. Але іх значна больш. Адзінае патрабаванне - зрабіць водступ.

Зараз давайце прааналізуем гэтую паслядоўнасць каманд.

лік = int(уваход(“Напішыце лік: “))

калі лік> 10:

    print(“першы радок”)

    print(“другі радок”)

    print(“трэці радок”)

print(“Радок, які выконваецца, незалежна ад уведзенага ліку”)

print(“Канец прыкладання”)

Паспрабуйце адгадаць, які будзе вынік, калі вы ўвядзеце значэння 2, 5, 10, 15, 50.

Як бачыце, калі колькасць, уведзенае карыстальнікам, больш за дзесяць, то выводзіцца тры радкі + адна з тэкстам «Запускаць кожны раз ...» і адна «Канец», а калі менш за дзесяць, то толькі адна, з іншы тэкст. Калі ісціна, будуць выкананы толькі радкі 3,4,5. Аднак два апошнія радкі будуць запісаны незалежна ад таго, якую лічбу ўкажа карыстальнік.

Калі вы выкарыстоўваеце аператары непасрэдна ў кансолі, вынік будзе іншым. Інтэрпрэтатар неадкладна ўключае шматрадковы рэжым, калі пасля ўказанні крытэрыю праверкі націснуць Enter.

Дапусцім, мы напісалі наступную паслядоўнасць каманд.

>>>

>>> n = 100

>>> калі n > 10:

...

Пасля гэтага мы ўбачым, што >>> быў заменены на шматкроп'е. Гэта азначае, што шматрадковы рэжым уводу ўключаны. Прасцей кажучы, калі вы націснеце Enter, вы трапіце на ўваход другога этапу інструкцыі. 

І каб выйсці з гэтага блока, трэба дадаць у блок яшчэ адну канструкцыю if.

>>>

>>> n = 100

>>> калі n > 10:

… друк(«nv 10»)

...

Калі ўмова не выконваецца, праграма завяршаецца. Гэта праблема, так як карыстальнік можа ўспрыняць такую ​​праграму як закрытую з-за збою. Такім чынам, неабходна даваць зваротную сувязь з карыстальнікам. Для гэтага выкарыстоўваецца спасылка калі-небудзь.

аператар выразу калі-небудзь

Гэты аператар дазваляе рэалізаваць спасылку: калі выраз адпавядае пэўнаму правілу, выканаць гэтыя дзеянні, а калі не, то іншыя. Гэта значыць дазваляе падзяліць паток праграмы на дзве дарогі. Сінтаксіс інтуітыўна зразумелы:

калі ўмова:

    # блок калі

    заява 1

    заява 2

    і гэтак далей

яшчэ:

    # іншы блок

    заява 3

    заява 4

    і гэтак далей:

Давайце растлумачым, як працуе гэты аператар. Спачатку стандартны аператар выконваецца ў патоку ціс, правяраючы, ці супадае стан "Праўда ці хлусня". Далейшыя дзеянні залежаць ад вынікаў праверкі. Калі ісціна, інструкцыя, якая знаходзіцца ў паслядоўнасці інструкцый пасля ўмовы, выконваецца непасрэдна. ціс, калі гэта ілжыва, то яшчэ

Такім чынам вы можаце апрацоўваць памылкі. Напрыклад, карыстачу неабходна ўвесці радыус. Відавочна, што гэта можа быць толькі лік са знакам плюс, або гэта нулявое значэнне. Калі яно менш за 0, то трэба выдаць паведамленне з просьбай увесці станоўчае лік. 

Вось код, які рэалізуе гэтую задачу. Але тут ёсць адна памылка. Паспрабуйце адгадаць, які. 

радыус = int(input(“Увядзіце радыус: “))

калі радыус >= 0:

    print(“Акружнасць = “, 2 * 3.14 * радыус)

    print(“Плошча = “, 3.14 * радыус ** 2)

    яшчэ:

        print(“Калі ласка, увядзіце станоўчы лік”)

Памылка неадпаведнасці водступу. Калі і Інакш павінны размяшчацца без іх або з аднолькавай іх колькасцю (у залежнасці ад таго, укладзеныя яны ці не).

Прывядзём іншы варыянт выкарыстання (дзе ўсё будзе правільна з выраўноўваннем аператараў) – элемент прыкладання, які правярае пароль.

пароль = увод (“Увядзіце пароль: “)

калі пароль == «тсс»:

    print(“Сардэчна запрашаем”)

яшчэ:

    print(“У доступе забаронена”)

Гэтая інструкцыя прапускае чалавека далей, калі пароль sshh. Калі любая іншая камбінацыя літар і лічбаў, то адлюстроўваецца паведамленне «Доступ забаронены».

аператар-выраз if-elif-else

Толькі калі некалькі ўмоў не выконваюцца, выконваецца аператар, які знаходзіцца ў блоку. яшчэ. Гэты выраз працуе наступным чынам.

калі ўмова_1:

    # блок калі

    заяву

    заяву

    больш заявы

elif ўмова_2:

    # першы блок elif

    заяву

    заяву

    больш заявы

elif ўмова_3:

    # другі блок elif

    заяву

    заяву

    больш заявы

...

яшчэ

    заяву

    заяву

    больш заявы

Вы можаце задаць любую колькасць дадатковых умоў.

Укладзеныя заявы

Іншы спосаб рэалізаваць некалькі ўмоў - уставіць дадатковыя праверкі ўмоў у блок if.

аператар if ўнутры іншага блока ўмоў

gre_score = int(input(“Увядзіце бягучы крэдытны ліміт”))

per_grad = int(input(“Увядзіце свой крэдытны рэйтынг: “))

калі per_grad > 70:

    # знешні блок if

        калі gre_score > 150:

            # унутраны блок if

    print(“Віншуем, вы атрымалі крэдыт”)

яшчэ:

    print(“На жаль, вы не маеце права на крэдыт”)

Гэтая праграма выконвае праверку крэдытнага рэйтынгу. Калі ён меншы за 70, праграма паведамляе, што карыстальнік не мае права на крэдыт. Калі ён большы, праводзіцца другая праверка, ці перавышае бягучы крэдытны ліміт 150. Калі так, то адлюстроўваецца паведамленне аб тым, што крэдыт выдадзены.

Калі абодва значэння ілжывыя, то выводзіцца паведамленне аб тым, што ў карыстальніка няма магчымасці атрымаць крэдыт. 

Зараз давайце крыху перапрацуем гэтую праграму.

gre_score = int(input(“Увядзіце бягучы ліміт: “))

per_grad = int(input(“Увядзіце крэдытны бал: “))

калі per_grad > 70:

    калі gre_score > 150:

        print(“Віншуем, вы атрымалі крэдыт”)

    яшчэ:

        print(“Ваш крэдытны ліміт нізкі”)

яшчэ:

    print(“На жаль, вы не маеце права на крэдыт”)

Сам код вельмі падобны, але ўкладзены if таксама забяспечвае алгарытм у выпадку, калі ўмова з яго аказваецца ілжывым. Гэта значыць, ліміт па карце недастатковы, але крэдытная гісторыя добрая, выводзіцца паведамленне «У вас нізкі крэдытны рэйтынг».

аператар if-else ўнутры ўмовы яшчэ

Давайце зробім яшчэ адну праграму, якая вызначае адзнаку студэнта па выніках тэстаў.

адзнака = int(input(“Увядзіце свой бал: “))

калі бал >= 90:

    print(«Выдатна! Ваша адзнака - A»)

яшчэ:

    калі бал >= 80:

print(“Выдатна! Ваша адзнака B”)

    яшчэ:

калі бал >= 70:

    print(“Добра! Ваша ацэнка XNUMX”)

яшчэ:

    калі бал >= 60:

print(“Ваша адзнака D. Варта паўтарыць матэрыял.”)

    яшчэ:

print(“Вы правалілі экзамен”)

Прыкладанне спачатку правярае, ці большы бал або роўны 90. Калі так, то вяртае адзнаку A. Калі гэта ўмова ілжывая, то выконваюцца наступныя праверкі. Мы бачым, што алгарытм практычна аднолькавы на першы погляд. Такім чынам, замест праверкі ўнутры яшчэ лепш выкарыстоўваць камбінацыю калі-эліф-інакш.

Такім чынам, аператар if выконвае вельмі важную функцыю - гарантуе, што пэўныя часткі кода выконваюцца толькі ў тым выпадку, калі ў гэтым ёсць неабходнасць. Без яго немагчыма ўявіць праграмаванне, таму што нават для самых простых алгарытмаў патрэбныя разгалінаванні тыпу «пойдзеш налева — знойдзеш, а пойдзеш направа — трэба зрабіць тое і тое».

Пакінуць каментар