Изҳороти шартии if дар Python. Синтаксис, блокҳои else/elif, мисолҳо

Дар раванди омӯзиши барномасозӣ, аксар вақт лозим аст, ки барномаҳое эҷод кунанд, ки татбиқи онҳо дар ҳаёти воқеӣ чандон осон нест. Баъд аз ҳама, баъзан шумо бояд дастурҳоро танҳо дар шароити муайян риоя кунед. Барои татбиқи ин дар барнома, ҳама забонҳо изҳороти назоратӣ доранд. Бо ёрии онҳо, шумо метавонед ҷараёни иҷрои кодро назорат кунед, ҳалқаҳо эҷод кунед ё амалҳои муайянро танҳо ҳангоми дуруст будани шарти муайян иҷро кунед.

Имрӯз мо дар бораи изҳороти if, ки вазъи кунуниро барои як ҳолати муайян тафтиш мекунад ва дар асоси ин маълумот дар бораи амалҳои минбаъда қарор қабул мекунад, сӯҳбат хоҳем кард.

Намудҳои изҳороти назорат

Умуман, агар ягона изҳоротест, ки ҷараёни барномаро назорат мекунад. Инчунин худи ӯ метавонад ҷузъи занҷири калонтари операторҳо бошад.

Инчунин ҳалқаҳо ва изҳоротҳо мавҷуданд, ки раванди иҷрои онро назорат мекунанд. Имрӯз мо танҳо дар бораи оператори шартӣ ва занҷирҳое, ки дар он иштирок карда метавонад, сӯҳбат хоҳем кард.

Дар барномасозӣ чунин чизе ба монанди шоха вуҷуд дорад. Маҳз ин маънои пайдарпайии фармонҳоро дорад, ки танҳо дар сурати дуруст будани шарти муайян иҷро мешаванд. Худи меъёрҳо метавонанд гуногун бошанд:

  1. Баробарии тағирёбанда ба арзиши муайян.
  2. Иҷрои амали мушаххас.
  3. Ҳолати барнома (шикаст ё не).

Спектр метавонад хеле калонтар бошад. Изҳороти шартӣ дар якчанд намудҳо меоянд:

  1. Бо як шоха. Яъне, як санҷиш гузаронида мешавад, ки дар натиҷаи он амалҳои муайян анҷом дода мешаванд.
  2. Бо ду ё зиёда шохаҳо. Агар меъёри 1 дуруст бошад, меъёри 2-ро тафтиш кунед. Агар дуруст бошад, 3-ро санҷед. Ва ҳамин тавр, ба қадри зарурӣ тафтиш кунед.
  3. Бо чанд шарт. Дар ин ҷо ҳама чиз оддӣ аст. Тарҷумон якчанд шарт ё яке аз онҳоро тафтиш мекунад.

агар изҳорот

Сохтори оператори if дар ҳама забонҳо якхела аст. Аммо, дар Python, синтаксиси он аз ҳама дигарон то андозае фарқ мекунад:

агар шарт:

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

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

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

Аввал худи оператор эълон карда мешавад, ки баъд аз он шарти ба кор шуруъ кардани он навишта мешавад. Шарт метавонад дуруст ё нодуруст бошад.

Пас аз ин блок бо фармонҳо меояд. Агар он фавран ба як меъёри иҷрошаванда мувофиқат кунад, пас пайдарпаии мувофиқи фармонҳо блоки if номида мешавад. Дар он шумо метавонед ягон шумораи фармонҳоро истифода баред.

Диққат! Дар дохили ҳама агар фармонҳои блок бояд як андоза бошад. Сарҳадҳои блок аз ҷониби абзорҳо муайян карда мешаванд. 

Мутобиқи ҳуҷҷатҳои забонӣ, қафо 4 фосила аст. 

Ин оператор чӣ гуна кор мекунад? Вақте ки тарҷумон калимаи if-ро мебинад, он фавран ифодаро мувофиқи меъёрҳои муайянкардаи корбар тафтиш мекунад. Агар ин тавр бошад, пас вай ба чустучуи дастурхо ва аз паи онхо шуруъ мекунад. Дар акси ҳол, ҳамаи фармонҳои ин блок гузаронида мешаванд.

Агар изҳорот пас аз шарт дохил карда нашавад, он ҳамчун блоки if ҳисоб карда намешавад. Дар вазъияти мо ин хат аст . Бинобар ин, сарфи назар аз натиҷаи санҷиш, ин сатр иҷро карда мешавад.

Дар ин ҷо як пораи рамз барои мисоли кор кардани ин оператор аст.

рақам = int(ворид("Рақамро ворид кунед:"))

агар рақам > 10 бошад:

    чоп ("Рақам аз 10 зиёдтар аст")

Ин барнома аз корбар рақамеро талаб мекунад ва месанҷад, ки он аз 10 зиёд аст. Агар ин тавр бошад, он маълумоти мувофиқро бармегардонад. Масалан, агар корбар рақами 5-ро ворид кунад, он гоҳ барнома танҳо ба охир мерасад ва тамом.

Аммо агар шумо рақами 100-ро нишон диҳед, тарҷумон аз даҳ зиёд будани онро мефаҳмад ва хабар медиҳад.

Диққат! Дар ҳолати мо, агар шарт нодуруст бошад, барнома қатъ мешавад, зеро пас аз дастур ягон фармон дода намешавад.

Дар коди боло танҳо як фармон мавҷуд аст. Аммо шумораи зиёди онҳо зиёданд. Ягона шарт ин аст, ки банд кардан.

Акнун биёед ин пайдарпаии фармонҳоро таҳлил кунем.

рақам = int(input("Рақамро нависед:"))

агар рақам > 10 бошад:

    чоп («сатри аввал»)

    чоп («хати дуюм»)

    чоп («сатри сеюм»)

чоп ("Сатри иҷрошаванда, новобаста аз рақами воридшуда")

чоп («Барномаи хотимавӣ»)

Кӯшиш кунед, ки тахмин кунед, ки агар шумо арзишҳои 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(ворид("Радиусро ворид кунед:"))

агар радиус >= 0 бошад:

    чоп ("Давраи = ", 2 * 3.14 * радиус)

    чоп ("Майдон = ", 3.14 * радиус ** 2)

    дигар:

        чоп ("Лутфан рақами мусбатро ворид кунед")

Хатогии номувофиқатии абзор. Агар ва Дигар бояд бе онҳо ё бо ҳамон адади онҳо (вобаста ба лона будан ё набудани онҳо) ҷойгир карда шаванд.

Биёед як ҳолати дигари истифодаро пешниҳод кунем (дар он ҷо ҳама чиз бо ҳамоҳангсозии оператор дуруст хоҳад буд) - унсури барномае, ки паролро тафтиш мекунад.

парол = вуруд ("Паролро ворид кунед:")

агар парол == «sshh»:

    чоп («Хуш омадед»)

дигар:

    чоп («Дастрасӣ рад карда шуд»)

Агар парол sshh бошад, ин дастур шахсро дигар мегузарад. Агар ягон комбинатсияи дигари ҳарфҳо ва рақамҳо, он гоҳ паёми "Дастрасӣ рад карда шуд" -ро нишон медиҳад.

изҳорот-ифода if-elif-else

Танҳо агар чанд шарт дуруст набошад, изҳороти дар блок мавҷудбуда иҷро карда мешавад. боз. Ин ифода чунин кор мекунад.

агар шарт_1:

    # агар блок

    изҳороти

    изҳороти

    изҳороти бештар

elif ҳолати_2:

    # блоки аввалини элиф

    изҳороти

    изҳороти

    изҳороти бештар

elif ҳолати_3:

    # блоки дуюми элиф

    изҳороти

    изҳороти

    изҳороти бештар

...

боз

    изҳороти

    изҳороти

    изҳороти бештар

Шумо метавонед ягон шумораи шартҳои иловагиро муайян кунед.

Изҳороти дохилшуда

Роҳи дигари татбиқи якчанд шартҳо ин гузоштани санҷишҳои ҳолати иловагӣ дар блоки if мебошад.

Оператор if дар дохили блоки шартии дигар

gre_score = int(ворид ("Лимити кредитии ҷории худро ворид кунед"))

per_grad = int(input("Рейтинги кредитии худро ворид кунед: "))

агар per_grad > 70:

    # беруна агар блок

        агар gre_score > 150 бошад:

            # блоки дохилӣ

    чоп ("Табрик мекунам, шумо қарз гирифтед")

дигар:

    чоп ("Мутаассифона, шумо барои гирифтани қарз ҳақ надоред")

Ин барнома санҷиши рейтинги кредитиро иҷро мекунад. Агар он камтар аз 70 бошад, барнома гузориш медиҳад, ки корбар ҳуқуқи гирифтани қарзро надорад. Агар он зиёд бошад, санҷиши дуюм гузаронида мешавад, то бубинад, ки лимити қарзи ҷорӣ аз 150 зиёд аст ё не. Агар ҳа, пас паёме пайдо мешавад, ки қарз дода шудааст.

Агар ҳарду арзишҳо нодуруст бошанд, пас паёме нишон дода мешавад, ки корбар имкони гирифтани қарзро надорад. 

Акнун биёед он барномаро каме аз нав кор кунем.

gre_score = int(input("Маҳдудияти ҷорӣро ворид кунед:"))

per_grad = int("Воридкунии холҳои кредитӣ:"))

агар per_grad > 70:

    агар gre_score > 150 бошад:

        чоп ("Табрик мекунам, шумо қарз гирифтед")

    дигар:

        чоп ("Лимити кредитии шумо кам аст")

дигар:

    чоп ("Мутаассифона, шумо барои гирифтани кредит ҳақ надоред")

Худи код хеле монанд аст, аммо лона аст if инчунин алгоритмеро пешниҳод мекунад, ки агар шарти он нодуруст гардад. Яъне лимити корт нокифоя аст, аммо таърихи қарз хуб аст, паёми “Рейтинги кредитии шумо паст аст” нишон дода мешавад.

изҳороти if-else дар дохили шарт боз

Биёед барномаи дигареро созем, ки баҳои донишҷӯро аз рӯи холҳои санҷиш муайян мекунад.

хол = int(ворид("Холи худро ворид кунед: "))

агар хол >= 90 бошад:

    чоп (“Аъло! Баҳои шумо А”)

дигар:

    агар хол >= 80 бошад:

чоп («Аъло! Баҳои шумо В»)

    дигар:

агар хол >= 70 бошад:

    чоп ("Хуб! Баҳои шумо C аст")

дигар:

    агар хол >= 60 бошад:

чоп ("Баҳои шумо D аст. Меарзад такрори мавод.")

    дигар:

чоп ("Шумо аз имтиҳон натавонистед")

Ариза аввал месанҷад, ки хол аз 90 зиёд ё баробар аст ё не. Агар ҳа, он гоҳ баҳои А бармегардонад. Агар ин шарт нодуруст бошад, пас санҷишҳои минбаъда гузаронида мешаванд. Мо мебинем, ки алгоритм дар назари аввал тақрибан якхела аст. Пас, ба ҷои тафтиш дар дохили боз омехта истифода бурдан беҳтар аст if-elif-else.

Пас, оператор if вазифаи хеле муҳимро иҷро мекунад - он боварӣ ҳосил мекунад, ки қисмҳои муайяни код танҳо дар ҳолати зарурӣ иҷро карда мешаванд. Бе ин барномасозиро тасаввур кардан ғайриимкон аст, зеро ҳатто соддатарин алгоритмҳо вилкаҳоро талаб мекунанд, ба монанди «агар ба тарафи чап равӣ, онро меёбӣ ва агар ба тарафи рост равӣ, ин ва он корро кардан лозим».

Дин ва мазҳаб