Truth Values and Boolean Tests

Truth Values and Boolean Tests – Python में जब किसी भी प्रकार का Test किया जाता है, तो हमें Boolean Values के रूप में Test Result प्राप्‍त होता है और इसी Boolean Result के आधार पर तय होता है कि if Statement का Statement Block Execute होगा या नहीं होगा और Python में Boolean Test करने के लिए जो Boolean Operators Use होते हैं, वे C/C++ जैसी Programming Languages की तुलना में थोड़ा अलग तरीके से काम करते हैं।

Python में प्रत्‍येक Object के अन्‍दर एक Inherent Boolean True या False Value Stored होता है। जिसके परिणामस्‍वरूप-

  • कोई भी Non-Zero Number या Non-Empty Object हमेंशा True को Represent करता है।
  • Zero Numbers ( 0, 0.0, etc… ), Empty Objects ( {}, (), [], etc… ) व Special Object None हमेंशा False को Represent करते हैं।
  • जब हम कोई Data Structure (List, Tuple, Dictionary, etc…) Use करते हैं, तब सभी तरह के ComparisonEquality Tests, इन Data Structures के सभी Data Members पर Recursively Apply होते हैं।
  • सभी तरह के ComparisonEquality Tests से जो True या False Return होता है, वो Custom Version 1 व 0 का ही एक नाम है।
  • Boolean andor Operators हमेंशा एक True या False Operand Object Return करते हैं।
  • जब हम Boolean Operators Use करते हैं, तो Result के मिलते ही इनका Evaluation रूक जाता जाता है, जिसे Short Circuit के नाम से जाना जाता है।

इस प्रकार से if, if … elseif … elif … else Statements हमेंशा Truth Values के आधार पर इस बात का निर्णय लेते हैं कि उनके किस Statement Block को Execute किया जाना है लेकिन Boolean Operators (and, or, not) अन्‍य Expressions से Return होने वाले Truth Values के Combined Result के आधार पर True या False Return करते हैं।

इसे समझने के लिए हम निम्‍नानुसार एक Example Program Create कर सकते हैं जो कि तीन संख्‍याओं में से सबसे बड़ी संख्‍या Return करता है-

[code]
FileName: BigIn3Numbers-BooleanOperator.py
# Get User Inputs
firstNo = float(input("Enter First Number: "))
secondNo = float(input("Enter Second Number: "))
thirdNo = float(input("Enter Third Number: "))
print()
# Returned Day Name associated with Day Number
if(firstNo > secondNo and firstNo > thirdNo):
    print(firstNo, "is the biggest in", secondNo, "and", thirdNo)
elif(secondNo > firstNo and secondNo > thirdNo):
    print(secondNo, "is the biggest in", firstNo, "and", thirdNo)
else:
    print(thirdNo, "is the biggest in", firstNo, "and", secondNo)

Output
Enter First Number: 12.2
Enter Second Number: 54.6
Enter Third Number: 89.4
89.4 is the biggest in 12.2 and 54.6
[/code]

इस Example में हमने सबसे पहले User से तीन संख्‍याओं को Input करवाया है और फिर उनमें से सबसे बड़ी संख्‍या को Return किया है। जब तीन संख्‍याऐं User Input के रूप में Accept करने के बाद निम्‍नानुसार सबसे पहला if Statement Execute होता है-

if(firstNo > secondNo and firstNo > thirdNo):

तो Python सबसे पहले ये Check करता है कि FirstNo, secondNo से बड़ा है या नहीं। चूंकि हमारे Example में firstNo में 12.2 व secondNo में 54.6 है, इसलिए firstNo > secondNo Expression False Return करता है। परिणामस्‍वरूप पहले if Statement के इस Expression के स्‍थान पर False Return हो जाता है। जबकि Logical Operator and के बाद Specified firstNo > thirdNo Expression Execute होने पर भी False ही Return होता है क्‍योंकि secondNo में Stored 54.6, thirdNo में Stored 89.4 से बड़ा नहीं है। इस तरह से इन दोनों Expressions से जो Final Expression बनता है, वो निम्‍नानुसार होता है-

if(False and False):

और क्‍योंकि Logical Operator and केवल उसी स्थिति में True Return करता है, जबकि इसके Left व Right दोनों Sides के Expressions True Return करें। परिणामस्‍वरूप ये पहला if Statement Finally False Return करता है और Program Control निम्‍नानुसार Specified elif Statement पर चला जाता है-

elif(secondNo > firstNo and secondNo > thirdNo):

जहां फिर से इस बात को Check किया जाता है कि secondNo > firstNo है या नहीं और क्‍योंकि 54.6, बड़ा है 12.2 से, इसलिए ये Expression True Return कर देता है, और फिर Logical Operator and के बाद Specified secondNo > thirdNo Expression को Execute करता है, जो कि False Return कर देता है क्‍योंकि 54.6, बडा नहीं है 89.4 से। इसलिए Result के रूप में ये Expression False Return कर देता है, जिसके परिणामस्‍वरूप elif का Final Expression निम्‍नानुसार बन जाता है-

if(True and False):

और क्‍योंकि Logical Operator and केवल उसी स्थिति में True Return करता है, जबकि इसके Left व Right दोनों Sides के Expressions True Return करें। परिणामस्‍वरूप ये elif Statement भी Finally False Return करता है और Program Control सीधे ही अन्तिम else Statement पर चला जाता है और सबसे बड़ी संख्‍या के रूप में thirdNo के मान को Print कर देता है क्‍योंकि else Statement वह Statement होता है, जो केवल तभी Execute होता है, जब सभी if व elif Conditions False हो जाते हैं।

इस प्रकार से Logical and or Operators को अपने Left व Right दोनों ओर एक Boolean Value अथवा Boolean Value Return करने वाले Expression की जरूरत होती है। जबकि not Operator को केवल एक ही Operand की जरूरत होती है लेकिन जिस भी Operand के साथ इसे Specify कर देते हैं, उस Operand द्वारा Return होने वाले Boolean Value को ये not Operator Reverse कर देता है यानी True को False व False को True कर देता है।

Logica Operator के Boolean Algebra को निम्‍न सारणी द्वारा ज्‍यादा बेहतर तरीके से समझा जा सकता है-

Left Operand (x) Left Operand (y) Final Value of the Expression
x and y x or y x ! Y
TRUE TRUE TRUE TRUE FALSE
TRUE FALSE TRUE FALSE TRUE
FALSE TRUE TRUE FALSE TRUE
FALSE FALSE FALSE FALSE TRUE

जब Python में and व or Operators Use करते हैं, तब ये Operators हमेंशा true या false Object Return करते हैं, न कि True या False Value, इसलिए इन दोनों के बीच के अन्‍तर को समझना आपके लिए बहुत जरूरी है। उदाहरण के लिए यदि हम निम्‍न Statement लिखते हैं-

print(“Returned Value is:”, 5 or 6)

तो इस Statement का Execution होने के बाद हमें निम्‍नानुसार Output प्राप्‍त होता है-

Returned Value is: 5

क्‍योंकि 56 दोनों Non-Zero होने की वजह से वास्‍तव में or Operator Use करने पर ये Statement निम्‍नानुसार Expand होता है-

True or True

इसलिए जब हम Python में or Operator को Use करते हैं, तो जैसे ही Python को Non-Zero Integer Object 5 की वजह से पहला True प्राप्‍त हो जाता है, और Output के रूप में मान 5 Return हो जाता है, क्‍योंकि Logical Operators हमेंशा true या false Object Return करते हैं और हमारे इस Example Statement में 5 वह Integer Object हैं, जो कि or Operator के लिए पहला true है।

जबकि यदि हम इसी or Operator को निम्‍नानुसार Specify करते हैं-

print(“Returned Value is:”, [] or 6)

तो इस Statement का Execution होने पर हमें जो Output प्राप्‍त होता है वो निम्‍नानुसार होता है-

Returned Value is: 6

क्‍योंकि List Literal [ ] Empty होने की वजह से False होगा, परिणामस्‍वरूप Python or Operator के Right Part को Execute करेगा और ये or Operator निम्‍नानुसार Expand होगा-

False or True

जिसके फलस्‍वरूप Final Output के रूप में हमें Integer Object 6 प्राप्‍त होगा जो कि Non-Zero Object होने की वजह से True है।

जिस तरह से हमने or Operator को Use किया, ठीक उसी तरह से हम and Operator को भी Use कर सकते हैं और Return होने वाली Boolean Truth Value पर आधारित Object को Return करते हुए अपनी किसी Programming Requirement को Fulfill कर सकते हैं।

Python in Hindi - BccFalna.comये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook Python in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी है, तो निश्चित रूप से ये EBook भी आपके लिए काफी उपयोगी साबित होगी।

Python in Hindi | Page: 602 | Format: PDF

BUY NOW