Daxuyaniya heke şertî di Python de. Hevoksazî, blokên din/elif, mînak

Di pêvajoya fêrbûna bernamekirinê de, pir caran hewce ye ku bernameyên ku di jiyana rast de ne ew qas hêsan bin werin afirandin. Beriya her tiştî, dem bi dem hûn neçar in ku tenê di hin mercan de rêwerzan bişopînin. Ji bo ku hûn vê yekê di bernameyê de bicîh bikin, hemî zimanan xwedan daxuyaniyên kontrolê ne. Bi arîkariya wan, hûn dikarin herikîna darvekirina kodê kontrol bikin, biafirînin an hin çalakiyan tenê gava ku şertek rastîn rast e bikin.

Îro em ê li ser daxuyaniya if-ê biaxivin, ku rewşa heyî ji bo şertek diyarkirî kontrol dike, û li ser bingeha van agahiyan, biryarên derbarê kiryarên din de dide.

Cureyên Daxuyaniyên Kontrolê

Bi gelemperî, heke ne tenê daxuyaniya ku herikîna bernameyekê kontrol dike ye. Her weha ew bi xwe jî dikare bibe pêkhateyek ji zincîreyek mezin a operatoran.

Di heman demê de loop û daxuyaniyên ku pêvajoya pêkanîna wê kontrol dikin jî hene. Îro em ê tenê li ser operatorê şert û zincîreyên ku ew dikarin beşdar bibin biaxivin.

Di bernamekirinê de tiştekî bi navê şaxkirin heye. Bi rastî ev e ku tê wateya rêzek fermanan ku tenê heke şertek diyar rast be tê meşandin. Pîvan bixwe dikarin cûda bin:

  1. Wekheviya guhêrbarek bi nirxek diyar.
  2. Pêkanîna çalakiyek taybetî.
  3. Rewşa serîlêdanê (hilweşîn an na).

Spectrum dikare pir mezintir be. Daxuyaniyên şertî di çend celeban de têne:

  1. Bi yek şaxê. Ango kontrolek yekane tê kirin, di encamê de hin çalakî têne kirin.
  2. Bi du an zêdetir şaxên. Ger pîvana 1 rast be, wê hingê pîvana 2-ê kontrol bikin. Heke rast be, wê hingê 3-yê kontrol bikin. Ji ber vê yekê, bi qasî ku tê xwestin kontrol bikin.
  3. Bi çend şert û mercan. Li vir her tişt hêsan e. Wergêr ji bo çend şertan an yek ji wan kontrol dike.

heke daxuyanî

Avaniya bêjeya if di hemû zimanan de wek hev e. Lêbelê, di Python de, hevoksaziya wê ji hemî yên din hinekî cûda ye:

heke şert:

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

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

<ne derbasbûn>

Pêşîn, operator bixwe tê ragihandin, piştî ku şertê ku ew dest bi xebatê dike tê nivîsandin. Şert dikare rast an derewîn be.

Piştî vê yekê bloka bi fermanan tê. Ger ew tavilê li dû pîvanek ku divê were bicîhanîn, wê hingê rêza fermanan a têkildar jê re blokek heke tê gotin. Hûn dikarin her hejmarek fermanan tê de bikar bînin.

Baldarî! Pêdivî ye ku di hundurê hemî fermanên blokê de bi heman mezinahî be. Sînorên blokê ji hêla dakêşan ve têne destnîşankirin. 

Li gorî belgeyên zimanî, navber 4 valah e. 

Ev operator çawa dixebite? Dema ku wergêr peyva if dibîne, ew tavilê îfadeyê li hember pîvanên ku ji hêla bikarhêner ve hatî destnîşan kirin kontrol dike. Ger weha be, wê hingê ew dest pê dike li talîmatan digere û wan dişopîne. Wekî din, hemî fermanên vê blokê têne avêtin.

Ger daxuyaniyek piştî şertê neyê veqetandin, ew wekî bloka heke nayê hesibandin. Di rewşa me de ev rêz e . Ji ber vê yekê, bêyî ku encamek kontrolê hebe, ev rêz dê were darve kirin.

Li vir pişkek kodek ji bo mînakek ku ev operator çawa dixebite heye.

jimar = int(input ("Hejmarek binivîse: "))

heke hejmar > 10:

    çapkirin ("Hejmar ji 10 mezintir e")

Ev bername ji bikarhênerê re jimarek dişoxilîne û kontrol dike ka ew ji 10 mezintir e. Ger wusa be, ew agahdariya guncan vedigerîne. Mînakî, heke bikarhêner hejmara 5-ê bikeve, wê hingê bername dê bi tenê biqede, û ew e.

Lê heke hûn hejmara 100 diyar bikin, wê hingê wergêr dê fêm bike ku ew ji deh zêdetir e, û wê rapor bike.

Baldarî! Di rewşa me de, heke şert xelet be, bername disekine, ji ber ku piştî fermanê ferman nayê dayîn.

Di koda jorîn de tenê yek ferman heye. Lê gelek ji wan hene. Pêwîstiya yekane ew e ku meriv bikişîne.

Naha em vê rêza fermanan analîz bikin.

jimar = int(input("Hejmarek binivîse:"))

heke hejmar > 10:

    çapkirin ("rêza yekem")

    çapkirin ("xêza duyemîn")

    çapkirin ("xeta sêyemîn")

çapkirin ("Rêza ku tê darve kirin, bêyî ku jimara têkevin")

çapkirin ("Dawiya serîlêdanê")

Biceribînin ku hûn texmîn bikin ku heke hûn nirxên 2, 5, 10, 15, 50 têkevin encam dê çi be.

Wekî ku hûn dibînin, heke hejmara ku bikarhêner ji deh ve hatî destnîşan kirin ji deh zêdetir be, wê hingê sê rêz + yek bi nivîsa "Her car bimeşîne ..." û yek "Dawî" û heke ji deh kêmtir be, wê hingê tenê yek, bi nivîsek cuda. Ger rast be tenê rêzikên 3,4,5 dê bêne darve kirin. Lêbelê, her du rêzên paşîn dê bêne nivîsandin bêyî ku bikarhêner kîjan hejmar diyar bike.

Ger hûn daxuyaniyan rasterast di konsolê de bikar bînin, encam dê cûda be. Ger piştî diyarkirina pîvana verastkirinê, Enter bikirtînin, wergêr tavilê moda pir-xêz vedike.

Bifikirin ku me rêzika fermanên jêrîn nivîsandiye.

>>>

>>> n = 100

>>> heke n > 10:

...

Piştî wê, em ê bibînin ku >>> bi elîpsîs hatiye guhertin. Ev tê wê wateyê ku moda têketina pirhêl çalak e. Bi gotinên hêsan, heke hûn Enter bikirtînin, hûn ê derbasî têketina qonaxa duyemîn a fermanê bibin. 

Û ji bo ku hûn ji vê blokê derkevin, hûn hewce ne ku avahiyek din li blokê zêde bikin if.

>>>

>>> n = 100

>>> heke n > 10:

… çap bike («nv 10»)

...

Ger şert ne rast be, bername diqede. Ev pirsgirêkek e, ji ber ku bikarhêner dibe ku bernameyek wusa ji ber têkçûnekê girtî ye. Ji ber vê yekê, pêdivî ye ku meriv bersivê bide bikarhêner. Ji bo vê yekê, girêdanek tê bikaranîn ger-din.

operatorê îfadeyê ger-din

Ev operator destûrê dide we ku hûn girêdanek bicîh bikin: heke îfade bi qaîdeyek diyarkirî re têkildar be, van çalakiyan pêk bînin, û heke na, wê hingê yên din. Ango, ew dihêle hûn herikîna bernameyê li du rêyan dabeş bikin. Hevoksazî întuitive e:

heke şert:

    # heke asteng bike

    daxuyanî 1

    daxuyanî 2

    wate ya vê çîye

wekîdi:

    # din asteng bike

    daxuyanî 3

    daxuyanî 4

    wate ya vê çîye:

Ka em rave bikin ka ev operator çawa dixebite. Pêşîn, daxuyaniya standard di nav mijarê de tê darve kirin yew, kontrol bikin ka ew lihevhatî ye rewş "rast" an "derew". Çalakiyên din bi encamên kontrolê ve girêdayî ye. Ger rast be, talîmata ku di rêza rêwerzên li pey şertê de ye rasterast tê meşandin. yew, eger ew derew e, hingê wekîdi

Bi vî awayî hûn dikarin xeletiyan bikin. Mînakî, bikarhêner pêdivî ye ku radiusek bikeve. Eşkere ye, ew tenê dikare hejmarek bi nîşanek zêde be, an jî ew nirxek betal e. Ger ew ji 0 kêmtir be, wê hingê hûn hewce ne ku peyamek bidin ku ji we bipirsin ku hejmareke erênî têkevin. 

Li vir koda ku vê peywirê pêk tîne ye. Lê li vir xeletiyek heye. Biceribînin ku texmîn bikin ka kîjan. 

radius = int(input ("Radyus binivîse: "))

eger radius >= 0:

    çapkirin ("Dîroka = ", 2 * 3.14 * radius)

    çapkirin ("Herêm = ", 3.14 * radius ** 2)

    wekîdi:

        çap bike ("Ji kerema xwe hejmareke erênî binivîse")

Çewtiya nelihevhatina îndentasyonê. Ger û Din divê bêyî wan an bi heman hejmara wan (li gorî ka ew hêlîn in an na) bi cih bibin.

Werin em dozek karanîna din bidin (ku her tişt dê bi hevrêziya operatorê rast be) - hêmanek serîlêdanê ku şîfreyek kontrol dike.

şîfre = têketin ("Şîfreyê binivîse:")

eger şîfre == «sshh»:

    çapkirin ("Bi xêr hatî")

wekîdi:

    çapkirin ("Gihîn hat red kirin")

Heke şîfre sshh be, ev rêwerz mirov bêtir diavêje. Ger yek ji tîpan û jimareyan berhevokek din hebe, wê hingê ew peyama "Gihîn hat red kirin" nîşan dide.

daxuyanî-îfade eger-elif-din

Tenê heke çend şert ne rast bin, daxuyaniya ku di blokê de ye tê darve kirin. wekîdi. Ev îfade bi vî rengî dixebite.

heke şert_1:

    # heke asteng bike

    îfade

    îfade

    bêtir daxuyanî

elif şert_2:

    # bloka elifê ya yekem

    îfade

    îfade

    bêtir daxuyanî

elif şert_3:

    # bloka elifê ya duyemîn

    îfade

    îfade

    bêtir daxuyanî

...

wekîdi

    îfade

    îfade

    bêtir daxuyanî

Hûn dikarin hejmarek şertên din diyar bikin.

Daxuyaniyên nested

Rêbazek din a bicîhkirina şertên pirjimar ev e ku meriv kontrolên şertên zêde di bloka if de têxe.

Makînevan if di hundurê bloka şertek din de

gre_score = int(input ("Sînora krediya xweya heyî binivîse"))

per_grad = int(input("Peymana krediya xwe binivîse:"))

heke per_grad > 70:

    # ger bloka derve

        heke gre_score > 150:

            # hundurîn ger blok

    çapkirin ("Pîroz be, we deyn stand")

wekîdi:

    çap bike ("Bibore, hûn ne mafdar in ku deyn bidin")

Ev bername kontrolek nirxa krediyê pêk tîne. Ger ew ji 70 kêmtir be, bername rapor dike ku bikarhêner ji bo krediyê ne mafdar e. Ger ew mezintir be, kontrolek duyemîn tê kirin da ku were dîtin ka sînorê krediya heyî ji 150 mezintir e. Ger erê, wê hingê peyamek tê xuyang kirin ku kredi hatîye dayîn.

Ger her du nirx jî derew in, wê hingê peyamek tê xuyang kirin ku bikarhêner îmkana wergirtina deyn tune. 

Naha em wê bernameyê hinekî ji nû ve bixebitin.

gre_score = int(input ("Sînorê heyî têke: "))

per_grad = int(input ("Pêvajoya krediyê binivîse: "))

heke per_grad > 70:

    heke gre_score > 150:

        çapkirin ("Pîroz be, we deyn stand")

    wekîdi:

        çap bike ("Sînora krediya we kêm e")

wekîdi:

    çap bike ("Bibore, tu ne mafdar î kredî")

Kod bixwe pir dişibihe, lê hêlîn e if di heman demê de heke şertê jê derew derkeve algorîtmayek peyda dike. Ango sînorê qertê têrê nake, lê dîroka krediyê baş e, peyama "Tu rêjeya krediyê kêm e" tê xuyang kirin.

eger-din îfadeya di hundirê şertekê de wekîdi

Werin em bernameyek din çêkin ku li gorî pîvanên testê pola xwendekarek diyar dike.

pûan = int(input ("Pûaneya xwe binivîse: "))

heke xal >= 90:

    çap bike ("Gelî! Nota te A ye")

wekîdi:

    heke xal >= 80:

çap bike ("Gelî! Nota te B ye")

    wekîdi:

heke xal >= 70:

    çap bike ("Baş e! Nota te C ye")

wekîdi:

    heke xal >= 60:

çapkirin ("Pola we D ye. Hêjayî dubarekirina materyalê ye.")

    wekîdi:

çapkirin ("Te îmtîhanê têk çû")

Serlêdan pêşî kontrol dike ku bibîne ka pûan ji 90 mezintir an wekhev e. Ger erê, wê hingê ew pola A vedigerîne. Ger ev rewş xelet be, wê hingê kontrolên paşîn têne kirin. Em dibînin ku algorithm di nihêrîna pêşîn de hema hema yek e. Ji ber vê yekê li şûna ku hûn hundurê kontrol bikin wekîdi çêtir e ku meriv berhevokek bikar bîne eger-elif-din.

Ji ber vê yekê operator if fonksiyonek pir girîng pêk tîne - ew piştrast dike ku hin perçeyên kodê tenê heke hewcedariya wê hebe têne darve kirin. Ne mimkûn e ku meriv bêyî wê bernamekirinê bifikire, ji ber ku algorîtmayên herî hêsan jî fortên mîna "heke hûn ber bi çepê ve biçin, hûn ê wê bibînin, û heke hûn biçin rastê, wê hingê hûn hewce ne ku wiya û wê bikin."

Leave a Reply