Python හි කොන්දේසි සහිත if ප්‍රකාශය. Syntax, else/elif blocks, උදාහරණ

වැඩසටහන් කිරීමට ඉගෙනීමේ ක්‍රියාවලියේදී, සැබෑ ජීවිතයේ යෙදීමට එතරම් පහසු නොවන වැඩසටහන් නිර්මාණය කිරීම බොහෝ විට අවශ්‍ය වේ. සියල්ලට පසු, වරින් වර ඔබ යම් යම් කොන්දේසි යටතේ පමණක් උපදෙස් අනුගමනය කළ යුතුය. වැඩසටහන තුළ මෙය ක්‍රියාත්මක කිරීමට හැකිවීම සඳහා, සියලුම භාෂාවලට පාලන ප්‍රකාශ ඇත. ඔවුන්ගේ උපකාරයෙන්, ඔබට කේත ක්රියාත්මක කිරීමේ ප්රවාහය පාලනය කළ හැකිය, ලූප නිර්මාණය කිරීම හෝ යම් යම් ක්රියාවන් සිදු කිරීම යම් කොන්දේසියක් සත්ය වන විට පමණි.

අද අපි කතා කරන්නේ if ප්‍රකාශය, එය යම් කොන්දේසියක් සඳහා වර්තමාන තත්වය පරීක්ෂා කර, මෙම තොරතුරු මත පදනම්ව, ඉදිරි ක්‍රියාමාර්ග පිළිබඳ තීරණ ගනී.

පාලන ප්රකාශ වර්ග

පොදුවේ ගත් කල, වැඩසටහනක ගලායාම පාලනය කරන එකම ප්‍රකාශය නම් නොවේ. එසේම ඔහු විසින්ම විශාල මෙහෙයුම් දාමයක අංගයක් විය හැකිය.

එහි ක්රියාත්මක කිරීමේ ක්රියාවලිය පාලනය කරන ලූප සහ ප්රකාශයන් ද ඇත. අද අපි කතා කරන්නේ කොන්දේසි සහිත ක්‍රියාකරු සහ එයට සහභාගී විය හැකි දාමයන් ගැන පමණි.

ක්‍රමලේඛනයේදී, ශාඛා කිරීම වැනි දෙයක් තිබේ. නිශ්චිතවම මෙයින් අදහස් කරන්නේ යම් කොන්දේසියක් සත්‍ය නම් පමණක් ක්‍රියාත්මක වන විධාන අනුපිළිවෙලකි. නිර්ණායක වෙනස් විය හැකිය:

  1. යම් අගයකට විචල්‍යයක සමානාත්මතාවය.
  2. නිශ්චිත ක්රියාවක් සිදු කිරීම.
  3. යෙදුම් තත්ත්වය (කඩා වැටුණු හෝ නැත).

වර්ණාවලිය වඩා විශාල විය හැක. කොන්දේසි සහිත ප්රකාශයන් වර්ග කිහිපයකින් පැමිණේ:

  1. එක් ශාඛාවක් සමඟ. එනම්, එක් චෙක්පතක් සිදු කරනු ලබන අතර, එහි ප්රතිඵලයක් වශයෙන් ඇතැම් ක්රියා සිදු කරනු ලැබේ.
  2. ශාඛා දෙකක් හෝ වැඩි ගණනක් සමඟ. නිර්ණායක 1 සත්‍ය නම්, නිර්ණායක 2 පරීක්ෂා කරන්න. එය සත්‍ය නම්, 3 පරීක්ෂා කරන්න. එබැවින්, අවශ්‍ය තරම් චෙක්පත් කරන්න.
  3. කොන්දේසි කිහිපයක් සමඟ. මෙහි සෑම දෙයක්ම සරලයි. පරිවර්තකයා කොන්දේසි කිහිපයක් හෝ ඒවායින් එකක් සඳහා පරීක්ෂා කරයි.

ප්‍රකාශය නම්

if ප්‍රකාශයේ ව්‍යුහය සෑම භාෂාවකම සමාන වේ. කෙසේ වෙතත්, පයිතන් හි, එහි වාක්‍ය ඛණ්ඩය අනෙක් සියල්ලටම වඩා තරමක් වෙනස් ය:

කොන්දේසිය නම්:

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

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

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

පළමුව, ක්රියාකරු විසින්ම ප්රකාශ කරනු ලැබේ, පසුව එය වැඩ කිරීමට පටන් ගන්නා කොන්දේසිය ලියා ඇත. කොන්දේසිය සත්‍ය හෝ අසත්‍ය විය හැකිය.

මෙය විධාන සහිත බ්ලොක් එකක් අනුගමනය කරයි. එය වහාම සපුරාලිය යුතු නිර්ණායකයක් අනුගමනය කරන්නේ නම්, ඊට අනුරූප විධාන අනුපිළිවෙල if block ලෙස හැඳින්වේ. ඔබට එය තුළ ඕනෑම විධානයක් භාවිතා කළ හැකිය.

අවධානය! සියලු if block විධානයන් තුළ ඇති indentation එකම ප්‍රමාණය විය යුතුය. බ්ලොක් මායිම් ඉන්ඩෙන්ට් මගින් තීරණය වේ. 

භාෂා ලේඛනයට අනුව, ඉන්ඩෙන්ටේෂන් අවකාශය 4 කි. 

මෙම ක්රියාකරු ක්රියා කරන්නේ කෙසේද? පරිවර්තකයා if වචනය දකින විට, එය පරිශීලක-නිශ්චිත නිර්ණායකයට එරෙහිව ප්‍රකාශනය වහාම පරීක්ෂා කරයි. මෙය එසේ නම්, ඔහු උපදෙස් සොයමින් ඒවා අනුගමනය කිරීමට පටන් ගනී. එසේ නොමැතිනම්, මෙම බ්ලොක් එකෙන් සියලුම විධානයන් මඟ හරිනු ලැබේ.

තත්ත්වයෙන් පසු ප්‍රකාශයක් ඉන්ඩෙන්ට් කර නොමැති නම්, එය if block එකක් ලෙස සලකන්නේ නැත. අපගේ තත්වය තුළ, මෙම රේඛාව වේ . එබැවින්, චෙක්පතේ ප්රතිඵලය කුමක් වුවත්, මෙම රේඛාව ක්රියාත්මක කරනු ලැබේ.

මෙන්න මෙම ක්‍රියාකරු ක්‍රියා කරන ආකාරය පිළිබඳ උදාහරණයක් සඳහා කේත කොටසකි.

අංකය = int (ආදානය ("අංකයක් ඇතුලත් කරන්න:"))

අංකය > 10 නම්:

    මුද්‍රණය ("සංඛ්‍යාව 10 ට වැඩි")

මෙම වැඩසටහන මඟින් අංකයක් සඳහා පරිශීලකයාගෙන් විමසන අතර එය 10 ට වඩා වැඩි දැයි පරීක්ෂා කරයි. එසේ නම්, එය සුදුසු තොරතුරු ලබා දෙයි. උදාහරණයක් ලෙස, පරිශීලකයා අංක 5 ඇතුළත් කළහොත්, වැඩසටහන සරලව අවසන් වනු ඇත, එය එයයි.

නමුත් ඔබ අංක 100 සඳහන් කරන්නේ නම්, එය දහයකට වඩා වැඩි බව පරිවර්තකයා තේරුම් ගෙන එය වාර්තා කරයි.

අවධානය! අපගේ නඩුවේදී, කොන්දේසිය අසත්‍ය නම්, වැඩසටහන නතර වේ, මන්ද උපදෙස් වලින් පසුව කිසිදු විධානයක් ලබා නොදේ.

ඉහත කේතයේ ඇත්තේ එක් විධානයක් පමණි. නමුත් ඒවායින් තවත් බොහෝ දේ ඇත. එකම අවශ්‍යතාවය ඉන්ඩෙන්ට් කිරීමයි.

දැන් අපි මෙම විධාන අනුපිළිවෙල විශ්ලේෂණය කරමු.

අංකය = int (ආදානය ("අංකයක් ලියන්න:"))

අංකය > 10 නම්:

    මුද්‍රණය ("පළමු පේළිය")

    මුද්රණය ("දෙවන පේළිය")

    මුද්රණය ("තුන්වන පේළිය")

මුද්‍රණය (“ඇතුලත් කළ අංකය කුමක් වුවත්, ක්‍රියාත්මක කරන රේඛාව”)

මුද්‍රණය ("අයදුම්පත අවසන් කරන්න")

ඔබ 2, 5, 10, 15, 50 අගයන් ඇතුළත් කළහොත් ප්‍රතිදානය කුමක් වේද යන්න අනුමාන කිරීමට උත්සාහ කරන්න.

ඔබට පෙනෙන පරිදි, පරිශීලකයා විසින් ඇතුළත් කරන ලද අංකය දහයකට වඩා වැඩි නම්, පේළි තුනක් ප්‍රතිදානය වේ + එකක් "සෑම වාරයක්ම ධාවනය කරන්න ..." සහ එක් "අවසන්" යන පාඨය සමඟ, සහ දහයට වඩා අඩු නම්, එකක් පමණක්, සමඟ වෙනස් පාඨයක්. සත්‍ය නම් 3,4,5 පේළි පමණක් ක්‍රියාත්මක වේ. කෙසේ වෙතත්, පරිශීලකයා කුමන අංකය සඳහන් කළත් අවසාන පේළි දෙක ලියා ඇත.

ඔබ ප්‍රකාශයන් කෙලින්ම කොන්සෝලයේ භාවිතා කරන්නේ නම්, ප්‍රති result ලය වෙනස් වනු ඇත. සත්‍යාපන නිර්ණායකය සඳහන් කිරීමෙන් පසුව, Enter ඔබන්න නම්, පරිවර්තකයා වහාම බහු-රේඛා මාදිලිය සක්‍රීය කරයි.

අපි පහත විධාන අනුපිළිවෙල ලියා ඇතැයි සිතමු.

>>>

>>> n = 100

>>> n > 10 නම්:

...

ඊට පසු, අපට පෙනෙනු ඇත >>> ellipsis මගින් ප්රතිස්ථාපනය කර ඇත. මෙයින් අදහස් කරන්නේ බහු රේඛා ආදාන මාදිලිය සක්රිය කර ඇති බවයි. සරල වචන වලින් කිවහොත්, ඔබ 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 block

    ප්රකාශය

    ප්රකාශය

    වැඩි ප්රකාශයක්

elif තත්ත්වය_3:

    # දෙවන එලිෆ් බ්ලොක්

    ප්රකාශය

    ප්රකාශය

    වැඩි ප්රකාශයක්

...

වෙන

    ප්රකාශය

    ප්රකාශය

    වැඩි ප්රකාශයක්

ඔබට ඕනෑම අමතර කොන්දේසි ගණනාවක් නියම කළ හැක.

කැදලි ප්‍රකාශ

බහු කොන්දේසි ක්‍රියාත්මක කිරීමට තවත් ක්‍රමයක් නම් if block හි අමතර තත්ව චෙක්පත් ඇතුළත් කිරීමයි.

ක්රියාකරු if තවත් කොන්දේසියක් ඇතුළත

gre_score = int (ආදානය ("ඔබගේ වත්මන් ණය සීමාව ඇතුලත් කරන්න"))

per_grad = int(input("ඔබේ ණය ශ්‍රේණිගත කිරීම ඇතුලත් කරන්න:"))

per_grad > 70 නම්:

    # පිටත නම් බ්ලොක්

        gre_score > 150 නම්:

            # ඇතුල් නම් අවහිර

    මුද්රණය ("සුබ පැතුම්, ඔබට ණයක් ලැබී ඇත")

වෙනත්:

    මුද්‍රණය ("කණගාටුයි, ඔබ ණයක් සඳහා සුදුසුකම් නොලබයි")

මෙම වැඩසටහන ණය ශ්‍රේණිගත කිරීම් පරීක්ෂාවක් සිදු කරයි. එය 70 ට වඩා අඩු නම්, පරිශීලකයා ණය සඳහා සුදුසුකම් නොලබන බව වැඩසටහන වාර්තා කරයි. එය වැඩි නම්, වත්මන් ණය සීමාව 150 ට වඩා වැඩි දැයි බැලීමට දෙවන චෙක්පතක් සිදු කරනු ලැබේ. එසේ නම්, ණය නිකුත් කර ඇති බවට පණිවිඩයක් පෙන්වයි.

අගයන් දෙකම අසත්‍ය නම්, පරිශීලකයාට ණයක් ලබා ගැනීමේ හැකියාවක් නොමැති බවට පණිවිඩයක් දර්ශනය වේ. 

දැන් අපි එම වැඩසටහන ටිකක් නැවත සකස් කරමු.

gre_score = int(input("වත්මන් සීමාව ඇතුලත් කරන්න:"))

per_grad = int(input("ණය ලකුණු ඇතුලත් කරන්න:"))

per_grad > 70 නම්:

    gre_score > 150 නම්:

        මුද්රණය ("සුබ පැතුම්, ඔබට ණයක් ලැබී ඇත")

    වෙනත්:

        මුද්‍රණය ("ඔබේ ණය සීමාව අඩුයි")

වෙනත්:

    මුද්‍රණය ("කණගාටුයි, ඔබ ණය සඳහා සුදුසුකම් නොලබයි")

කේතය ඉතා සමාන ය, නමුත් කැදලි ඇත if එහි කොන්දේසිය අසත්‍ය බවට පත් වුවහොත් ඇල්ගොරිතමයක් ද සපයයි. එනම්, කාඩ්පතෙහි සීමාව ප්රමාණවත් නොවේ, නමුත් ණය ඉතිහාසය හොඳයි, "ඔබට අඩු ණය ශ්රේණිගත කිරීමක් තිබේ" යන පණිවිඩය දර්ශනය වේ.

if-else ප්‍රකාශය කොන්දේසියක් ඇතුලේ වෙන

පරීක්ෂණ ලකුණු මත ශිෂ්‍යයෙකුගේ ශ්‍රේණිය තීරණය කරන තවත් වැඩසටහනක් කරමු.

ලකුණු = int (ආදානය ("ඔබේ ලකුණු ඇතුලත් කරන්න:"))

ලකුණු >= 90 නම්:

    මුද්‍රණය ("නියමයි! ඔබේ ශ්‍රේණිය A")

වෙනත්:

    ලකුණු >= 80 නම්:

මුද්‍රණය ("නියමයි! ඔබේ ශ්‍රේණිය B")

    වෙනත්:

ලකුණු >= 70 නම්:

    මුද්‍රණය (“හොඳයි! ඔබේ ශ්‍රේණිය C”)

වෙනත්:

    ලකුණු >= 60 නම්:

මුද්‍රණය කරන්න

    වෙනත්:

මුද්‍රණය ("ඔබ විභාගය අසමත්")

යෙදුම පළමුව ලකුණු 90 ට වඩා වැඩි හෝ සමාන දැයි බැලීමට පරීක්ෂා කරයි. එසේ නම්, එය A ශ්‍රේණියක් ලබා දෙයි. මෙම කොන්දේසිය අසත්ය නම්, පසුව චෙක්පත් සිදු කරනු ලැබේ. බැලූ බැල්මට ඇල්ගොරිතම පාහේ සමාන බව අපට පෙනේ. එබැවින් ඇතුළත පරීක්ෂා කිරීම වෙනුවට වෙන සංයෝජනයක් භාවිතා කිරීම වඩා හොඳය if-elif-else.

එබැවින් ක්රියාකරු if ඉතා වැදගත් කාර්යයක් ඉටු කරයි - එය යම් යම් කේත කොටස් ක්‍රියාත්මක වන්නේ ඒ සඳහා අවශ්‍ය නම් පමණක් බව සහතික කරයි. එය නොමැතිව ක්‍රමලේඛනය සිතාගත නොහැක, මන්ද සරලම ඇල්ගොරිතම වලට පවා “ඔබ වමට ගියහොත් ඔබට එය හමුවනු ඇත, ඔබ දකුණට ගියහොත් ඔබට මෙය සහ එය කළ යුතුය” වැනි ගෑරුප්පු අවශ්‍ය වේ.

ඔබමයි