Pythonдо шарттуу if оператору. Синтаксис, else/elif блоктору, мисалдар

Программалоону үйрөнүү процессинде көбүнчө реалдуу жашоодо колдонуу оңой болбогон программаларды түзүү керек болот. Анткени, мезгил-мезгили менен белгилүү бир шарттарда гана көрсөтмөлөрдү аткарууга туура келет. Программада муну ишке ашыруу үчүн, бардык тилдерде контролдук билдирүүлөр бар. Алардын жардамы менен сиз коддун аткарылышынын агымын көзөмөлдөй аласыз, циклдерди түзө аласыз же белгилүү бир шарт чын болгондо гана белгилүү иш-аракеттерди жасай аласыз.

Бүгүн биз учурдагы кырдаалды белгилүү бир шартка текшерген жана бул маалыматтын негизинде мындан аркы аракеттер жөнүндө чечим кабыл алган if билдирүүсү жөнүндө сүйлөшөбүз.

Контролдук билдирүүлөрдүн түрлөрү

Жалпысынан, эгерде бул программанын агымын көзөмөлдөгөн жалгыз билдирүү эмес. Ошондой эле ал өзү операторлордун чоң чынжырынын компоненти боло алат.

Анын аткарылышын көзөмөлдөөчү циклдер жана билдирүүлөр да бар. Бүгүн биз шарттуу оператор жана ал катыша турган чынжырлар жөнүндө гана сүйлөшөбүз.

Программалоодо бутактуу деген нерсе бар. Белгилүү бир шарт туура болгондо гана аткарылуучу буйруктардын ырааттуулугу дал ушул. Критерийлер ар кандай болушу мүмкүн:

  1. Өзгөрмөнүн белгилүү бир мааниге барабардыгы.
  2. Белгилүү бир иш-аракетти аткаруу.
  3. Колдонмонун абалы (жыгылган же жок).

Спектр алда канча чоң болушу мүмкүн. Шарттуу билдирүүлөр бир нече түргө бөлүнөт:

  1. Бир бутак менен. Башкача айтканда, бир текшерүү жүргүзүлөт, анын натыйжасында белгилүү иш-аракеттер аткарылат.
  2. Эки же андан көп бутактары менен. Эгерде 1-критерий чын болсо, анда 2-критерияны текшериңиз. Эгерде чын болсо, анда 3-критерияны текшериңиз. Ошентип, канча талап кылынса, ошончо текшерүү жүргүзүңүз.
  3. Бир нече шарттар менен. Бул жерде баары жөнөкөй. Котормочу бир нече шарттарды же алардын бирин текшерет.

эгерде билдирүү

if операторунун түзүлүшү бардык тилдерде окшош. Бирок, Python, анын синтаксиси бардык башкалардан бир аз айырмаланат:

шарт болсо:

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

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

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

Биринчиден, оператордун өзү жарыяланып, андан кийин анын иштей баштаган шарты жазылат. Шарт чын же жалган болушу мүмкүн.

Андан кийин буйруктар менен блок келет. Эгерде ал дароо аткарыла турган критерийге ылайык келсе, анда буйруктардын тиешелүү ырааттуулугу if блогу деп аталат. Анда сиз каалаган сандагы буйруктарды колдоно аласыз.

Көнүл бургула! If block командаларынын ичиндеги чегинүү бирдей өлчөмдө болушу керек. Блоктун чек аралары чегинүүлөр менен аныкталат. 

Тил документациясына ылайык, чегинүү 4 боштук. 

Бул оператор кандай иштейт? Котормочу if сөзүн көргөндө, сөз айкашын колдонуучу белгилеген критерийлерге дароо текшерет. Эгер ошондой болсо, анда ал көрсөтмөлөрдү издеп, аларды аткара баштайт. Болбосо, бул блоктун бардык буйруктары өткөрүп жиберилет.

Эгерде шарттан кийинки билдирүү чегинбесе, ал if блогу катары каралбайт. Биздин шартта бул линия . Демек, текшерүүнүн жыйынтыгына карабастан, бул сап аткарылат.

Бул оператордун иштешинин мисалы үчүн код үзүндүсү.

number = int(input("Санды киргизиңиз:"))

саны > 10 болсо:

    print("Сан 10дон көп")

Бул программа колдонуучудан санды сурайт жана анын 10дон көп экенин текшерет. Эгер ошондой болсо, ал тиешелүү маалыматты кайтарат. Мисалы, колдонуучу 5 санын киргизсе, анда программа жөн эле бүтөт, ушуну менен бүттү.

Бирок 100 санын көрсөтсөңүз, котормочу анын ондон ашык экенин түшүнүп, кабарлайт.

Көнүл бургула! Биздин учурда шарт туура эмес болсо, программа токтойт, анткени инструкциядан кийин эч кандай буйрук берилбейт.

Жогорудагы коддо бир гана буйрук бар. Бирок алардын саны дагы көп. Бир гана талап чегинүү болуп саналат.

Эми бул буйруктардын ырааттуулугун талдап көрөлү.

number = int(input("Санды жаз:"))

саны > 10 болсо:

    басып чыгаруу («биринчи сап»)

    басып чыгаруу («экинчи сап»)

    басып чыгаруу («үчүнчү сап»)

print("Киргизилген санга карабастан аткарылуучу сап")

басып чыгаруу ("Акыргы колдонмо")

Эгер сиз 2, 5, 10, 15, 50 маанилерин киргизсеңиз, натыйжа кандай болорун болжолдоого аракет кылыңыз.

Көрүнүп тургандай, эгерде колдонуучу киргизген сан ондон ашык болсо, анда үч сап чыгарылат + бир текст "Ар бир жолу иштетүү ..." жана бир "Аягы", ал эми ондон аз болсо, анда бир гана башка текст. Эгерде чын болсо, 3,4,5-саптар гана аткарылат. Бирок акыркы эки сап колдонуучу кандай санды көрсөтпөсүн жазылат.

Эгерде сиз билдирүүлөрдү түздөн-түз консолдо колдонсоңуз, натыйжа башкача болот. Котормочу дароо көп сап режимин күйгүзөт, эгерде текшерүү критерийин көрсөткөндөн кийин Enter баскычын бассаңыз.

Биз төмөнкү буйруктардын ырааттуулугун жаздык дейли.

>>>

>>> n = 100

>>> эгерде n > 10:

...

Андан кийин >>> эллипсис менен алмаштырылганын көрөбүз. Бул көп сап киргизүү режими иштетилген дегенди билдирет. Жөнөкөй сөз менен айтканда, эгер сиз Enter баскычын бассаңыз, сиз инструкциянын экинчи этабынын киргизүүсүнө өтөсүз. 

Ал эми бул блоктон чыгуу үчүн блокко дагы бир курулушту кошуу керек if.

>>>

>>> n = 100

>>> эгерде n > 10:

… басып чыгаруу(«nv 10»)

...

Шарт туура эмес болсо, программа аяктайт. Бул көйгөй, анткени колдонуучу мындай программаны катадан улам жабылган деп кабыл алышы мүмкүн. Ошондуктан, колдонуучуга пикир билдирүү керек. Бул үчүн, шилтеме колдонулат эгерде-башка.

экспрессия оператору эгерде-башка

Бул оператор шилтемени ишке ашырууга мүмкүндүк берет: эгер туюнтма белгилүү бир эрежеге дал келсе, бул аракеттерди аткарыңыз, эгер жок болсо, анда башкалар. Башкача айтканда, программанын агымын эки жолго бөлүүгө мүмкүндүк берет. Синтаксис интуитивдик:

шарт болсо:

    # if block

    билдирүү 1

    билдирүү 2

    жана башка

башка:

    # башка бөгөттөө

    билдирүү 3

    билдирүү 4

    жана башка:

Келгиле, бул оператор кандай иштээрин түшүндүрүп берели. Биринчиден, жипте стандарттык оператор аткарылат йе, дал келгенин текшерүү абал "чын" же "жалган". Андан аркы аракеттер текшерүүнүн жыйынтыгына жараша болот. Эгер чын болсо, шарттан кийинки инструкциялардын ырааттуулугунда турган нускама түздөн-түз аткарылат. йе, ал жалган болсо, анда дагы

Ушундай жол менен сиз каталарды чече аласыз. Мисалы, колдонуучу радиусту киргизиши керек. Албетте, бул плюс белгиси бар сан гана болушу мүмкүн, же бул нөлдүк маани. Эгерде ал 0дөн аз болсо, анда сиз оң санды киргизүүнү суранган билдирүүнү чыгарышыңыз керек. 

Бул жерде бул тапшырманы ишке ашырган код. Бирок бул жерде бир ката бар. Кайсынысын болжолдоого аракет кылыңыз. 

radius = int(input("Радиусту киргизиңиз:"))

эгерде радиус >= 0:

    print(“Айлана = “, 2 * 3.14 * радиус)

    print(“Аянт = “, 3.14 * радиус ** 2)

    башка:

        print("Оң санды киргизиңиз")

чегинүү дал келбеген ката. If и Else аларсыз же ошончолук санда (алардын уя салынганына же салынбаганына жараша) жайгашуусу керек.

Келгиле, дагы бир колдонуу учурун берели (мында оператордун тегиздөөсүндө баары туура болот) – сырсөздү текшерген колдонмо элементи.

сырсөз = киргизүү ("Сырсөздү киргизиңиз:")

эгерде сырсөз == «sshh»:

    басып чыгаруу («Кош келиңиздер»)

башка:

    басып чыгаруу (“Кирүү мүмкүнчүлүгү четке кагылды”)

Эгер сырсөз sshh болсо, бул нускама адамды андан ары өткөрүп жиберет. Эгерде тамгалардын жана сандардын башка айкалышы, анда ал "Кирүү четке кагылды" деген билдирүүнү көрсөтөт.

билдирме-экспрессия if-elif-else

Эгерде бир нече шарттар туура эмес болсо гана, блоктогу билдирүү аткарылат. дагы. Бул сөз айкашы ушундай иштейт.

шарт_1 болсо:

    # if block

    билдирүү

    билдирүү

    көбүрөөк билдирүү

elif condition_2:

    # биринчи элиф блогу

    билдирүү

    билдирүү

    көбүрөөк билдирүү

elif condition_3:

    # экинчи элиф блогу

    билдирүү

    билдирүү

    көбүрөөк билдирүү

...

дагы

    билдирүү

    билдирүү

    көбүрөөк билдирүү

Сиз кошумча шарттардын каалаган санын көрсөтө аласыз.

Уюшкан билдирүүлөр

Бир нече шарттарды ишке ашыруунун дагы бир жолу - 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("Кечиресиз, сиз насыя ала албайсыз")

Коддун өзү абдан окшош, бирок уяланган if андан алынган шарт жалган болуп чыкса, алгоритм да берет. Башкача айтканда, картадагы лимит жетишсиз, бирок кредиттик тарыхы жакшы, “Сиздин кредиттик рейтингиңиз төмөн” деген билдирүү пайда болот.

шарттын ичиндеги if-else билдирүүсү дагы

Сынактын упайларына карап окуучунун баасын аныктай турган дагы бир программа жасайлы.

балл = int(input("Упайыңызды киргизиңиз:"))

эгерде упай >= 90:

    print("Сонун! Сиздин бааңыз А")

башка:

    эгерде упай >= 80:

print("Сонун! Сиздин бааңыз В")

    башка:

эгерде упай >= 70:

    print("Жакшы! Сиздин бааңыз C")

башка:

    эгерде упай >= 60:

print("Сиздин бааңыз D. Материалды кайталоо керек.")

    башка:

print("Сиз экзаменден өтпөй калдыңыз")

Колдонмо адегенде баллдын 90дон жогору же барабар экендигин текшерет. Ооба болсо, анда ал А баасын кайтарат. Бул шарт туура эмес болсо, анда кийинки текшерүүлөр жүргүзүлөт. Биз алгоритм бир караганда дээрлик бирдей экенин көрөбүз. Андыктан ичин текшергендин ордуна дагы айкалыштырып колдонуу жакшы if-elif-else.

Ошентип, оператор if абдан маанилүү функцияны аткарат - ал коддун айрым бөлүктөрүнүн зарыл болгон учурда гана аткарылышын камсыз кылат. Ансыз программалоону элестетүү мүмкүн эмес, анткени эң жөнөкөй алгоритмдер да “солго барсаң табасың, оңго барсаң тигини да, тигини да кылышың керек” сыяктуу айрыларды талап кылат.

Таштап Жооп