Sunday, June 23, 2013

pythonහි if භාවිතය

if කියන command එක Conditional statement කියන command වර්ගයට තමයි අයත් වෙන්නේ.මෙම වර්ගයේ commandපාවිච්චි කරන්න තීරණ ගැනීමේ කටයුතු වලදී.උදාහරණයක් හැටියට විබාගයකදී සමත් කිරීම 50 න් කරනවා යයි සිතමු.එවිට program එක ලකුණු පරීක්ෂා කර බලා ලකුණේ 50 ට වැඩිනම් පමණක් සමත් කලයුතු වනවා.
අපි මේ වගේ උදාහරණ කිහිපයක් බලමු

if(3>2) යන්නෙන් 3 දෙකට වඩා විශාලනම් පමණක් පහත ඇති code එක එෂෙකුතෙ වෙන්න කියනවා. මෙහිදී මෙම condition එක හරිනම් run විය යුතු code එක ඊළඟ පෙලියේ ටැබ් එකකට පසුව සඳහන් කලයුතුයි.ටැබ් එක තබා ඉවර වෙන තැන condition එක සපුරනවානම් කලයුතු command එවර වෙන බව python විසින් සලකනවා.
අපි මේක සඳහා ප්‍රායෝගික උදාහරණයක් බලමු
>>> def mark(number):
    if number >0:
        print ("+")
    if number<0:
        print("-")

      
>>> mark(100)
+
>>> mark(-100)
-
>>>
මේ function එකෙන් කරන්නේ number අර්ගුමෙන්ට් එකට ලැබෙන අගය 0 ට වැඩිද කියල බලල වැඩි නම් + ලකුණ ප්‍රින්ට් කරනවා ඊට පස්සේ 0 ට අඩුද කියල බලලඅඩු නම් - ප්‍රින්ට් කරනවා.
අපිට number ධන  නම් ඍන  ද කියල චෙච්ක් කරන්න ඕනේ නැහෙනෙ එක නිසා අපිට else පාවිච්චි කරන්න පුළුවන්.
>>> def mark(number):
    if number >0:
        print ("+")
    else:
        print("-")

      
>>> marks(12)
+
>>> marks(-12)
-
>>> 

මේකෙදි ඉස්සෙලම බලනවා number >0 ද කියල එක හරිනම් + ප්‍රින්ට් කරනවා.නැත් නම් - ප්‍රින්ට් කරනවා.number >0 නම් else එක බලන්නේ නැහැ.ඒ කියන්නේ අපිට if එක statement එකක් හරිනම් අනිත් ඒවා චෙච්ක් කරන්න ඕනේ නෙත් නම් අපි if else එකක් තමයි. පාවිච්චි කරන්නේ.නැතුව if







අපි මුලදී සඳහන් කල විභාගය සමත් අසමත් බව තීරණය කරන function එකක් ලියමු.
මෙහිදී මෙම function එකේ අර්ගුමෙන්ට් එකක් විදියට ලකුණු ලබා ගත යුතු අතර සමත් අසමත් බව return කල යුතුයි..

ඔබට පෙනෙනවා ඇති මෙහි කර ඇත්තේ අර්ගුමෙන්ට් එකක් විදියට ලකුණු(marks variable එකට) ලබාගෙන ඇති බවයි.පළමු if statement එක මගින් marks යන්න 50 වැඩි නම් "pass"  යනුවෙන් return කරනු ලබනවා.දෙවන if statement එක මගින් marks යන්න 50 ට අඩු නම් "fail"  යන්න return කරනවා.

මෙහිදී 0-100 අතර ඕනෙම අගයක් දුන්නොත් නිවැරදිව සමත් අසමත් යන්න ලබාදෙනවා. නමුත් ඒ අතර නොවන අගයන්ටත් පිළිතුරක් ලබා දීම ගැටළුවක්.අපිට තවත් if statement දෙකක් යොදාගෙන මෙම ගැටලුව මග හැර ගන්න පුලුවන්.
මම මේ code එක save කරගන්න පුළුවන් විදියට file එක්කම් code කල run->run module මගින් ඔබට program එක run එවිට ලැබෙන python shell එකේ ඔබට ෆුන්ක්තිඔන් එකට call කරන්න පුළුවන්.මෙම python program එකේ කලින් එකට වැඩ වෙනස්කම් කීපයක් තියෙනවා.එකක් තමයි if  statement එකේ condition එක වටේට වරහන් යොදල නැහැ.ඒ විදියට යොදාගත්තත් ගැටළුවක් නැහැ.ඓක තමයි කොඉතිඔන් එකක් හරි ගියාම return කිරීම වෙනුවට ප්‍රින්ට් කරන එක යොදා ගැනීම.එහෙම කලේ ඔබට කරුණු පැහැදිලි කරන්න පහසුවට.එකට හේතුව පස්සේ පැහැදිලි කරන්නම්කො.
 ඔබට පෙනෙනවා ඇති වැරදි ලකුණු වලට error එක ඇවිත් නමුත් තවම pass නෙත්නම් fail කියල ප්‍රින්ට් වෙනවා.
python program එක run කරන්නේ code කරලා තියෙන පිළිවෙලට.ඉස්සෙල්ලම function එකට call කලාම අපි දෙන අර්ගුමෙන්ට් එක marks කියන variable එකේ තියාගන්නවා.ඉස්සෙල්ලම බලනවා marks 0 ට අඩුද කියල.අඩුනම් "you entered wrong mark" කියල ප්‍රින්ට් කරනවා.ඊට පස්සේ බලනවා 100 ට වැඩිද කියල.වැඩිනම් error message එක ප්‍රින්ට් කරනවා.ඊ ලඟට බලනවා marks 50 ට වැඩිද කියල වැඩිනම් "pass" කියල ප්‍රින්ට් කරනවා.ඊ ලඟට බලනවා marks 50 ට අඩුද කියල අඩුනම් "fail" කියල ප්‍රින්ට් කරනවා.
අපි හිතමු 100 ට වැඩ ලකුණක් අපි අර්ගුමෙන්ට් එක විදියට දුන්න කියල එතකොට ඉස්සෙල්ල්ලම 100 වැඩිද බලන if එක හම්බ වෙන නිසා error එක ප්‍රින්ට් වෙනවා. ඒ ලඟට 50 ට වැඩිනම් "pass" කියල ප්‍රින්ට් කරන if එක හම්බ උනාම පස්ස කියලත් ප්‍රින්ට් කරනවා.එක නිසයි ඉහත අවුල ඇවිත් තියෙන්නේ.අපි 50ත වැඩිද කියන එක බලන එක code එකේ ඉස්සරහට දැම්මොත් pass කියන එක කලින් ප්‍රින්ට් වෙලා පස්සේ error එක ප්‍රින්ට් වෙයි.
අපි ඊ ලඟට if else පාවිච්චි කරන හැටි බලමු. 
මෙහිදී කරන්නේ if එකේදී කරන පරීක්ෂාව නිවැරදිනම් එක උපදෙසක් ක්‍රියාත්මක කරනවා.වැරදුනොත් තව උපදෙසක් ක්‍රියාත්මක කරනවා.මීට කලින් if එකේදී කරන පරීක්ෂාව වැරදුනොත් කරන දෙයක් ගැන අපි හොයල බැලුවේ  නැහැ.අපි පහත උදාහරනේයේ කරලා තිබෙන්නේ marks 50 ට වැඩි නම් pass යනුවෙන්ද නැත්නම් fail කියල return කරන එක.
අපි ඊ ලඟට බලමු if else if use කරන්නේ කොහොමද කියල.අපි කලින් උදාහරණයක්ම ගමු.අපි function
එකට අර්ගුමෙන්ට් විදියට ගන්න ඉලක්කම ධන නම් + ලකුණ return කරනවා.ඉලක්කම සෘණ නම් - ලකුණ return කරනවා. අංකය 0 නම් 0 return කරනවා.
මෙහිදී වෙන්නේ මුලින්ම number එක 0 ට වැඩිද බලනවා වැඩිනම් + return කරනවා.number එක 0 ට වැඩි නම් ආයේ පහල තියෙන elif ,else  දිහා බලන්නේ නැහැ.0 ට අඩුනම් elif එක බලනවා.එකත් නැත්නම් අන්තිමට else එක බලනවා.අපිට එක if block එකක elif ඕනේ තරමක් use කරන්න පුළුවන්.
අපි elif යොදාගෙන එවලුඅතෙ marks උදාහරණය නැවත සකස් කරමු.
මෙහිදී කලින් program එකේ තිබුන අවුල් ඔක්කොම නැති වෙලා තියෙනවා.කලින් 0 ට අඩු හරි 100 ට වැඩි හරි අංකයක් ඇතුල් කලවිට error එකට පසුව pass හරි fail හරි කියල එනවා.නමුත් දැන් එහෙම වෙන්නේ නැහැ.මොකද දැන් ක්‍රියාත්මක කරන්නේ එක statement එකක් විතරයි.
අපි ඊ ලඟට බලමු එක if එකක් ඇතුලේ condition දෙකක් හෝ ඊට වඩා ගණනක් පරීක්ෂා කරන්නේ කොහොමද කියල.අපි condition දෙකක් පිළිබඳව මුලදී සාකච්චා කරමු.
and-මෙහිදී condition දෙකම නිවැරදිනම් පමණක් command එක ක්‍රියාත්මක වෙනවා.

>>> def evaluate_marks(marks):
if marks>=0 and marks<=50:
print ("fail")
elif marks>50 and marks<=100:
print ("pass")
else:
print("wrong input")

>>> evaluate_marks(-3)
wrong input
>>> evaluate_marks(50)
fail
>>> evaluate_marks(51)
pass
>>> evaluate_marks(100)
pass
>>> evaluate_marks(101)
wrong input
>>> 

or-මෙහිදී එක condition එකක් හරි නිවැරදිනම් command එක ක්‍රියාත්මක වෙනවා.
ex-මෙය කලින් උදාහරණයම වෙනත් විදියකින් නමුත් ලැබෙන පිළිතුරු සමානයි.
>>> def evaluate_marks(marks):
if marks<0 or marks>100:
print ("wrong input")
elif marks>50:
print ("Pass")
else:
print("Fail")

>>> evaluate_marks(101)
wrong input
>>> evaluate_marks(100)
Pass
>>> evaluate_marks(50)
Fail
>>> evaluate_marks(0)
Fail
>>> evaluate_marks(-1)
wrong input
>>> 
not-මෙය අපි යොදාගන්නේ එක condition එකකට.එම condition එක වැරදිනම් විතරක් command එක run වෙනවා.
>>> if not a>4:
print("a<4")

a<4
>>>