Python proqramlaşdırma dili şrt operatoru
Alqoritmlərdə bir neçə mümkün hərəkətdən birinin seçilməsinə budaqlanma vasitəsilə nail olunur. Budaqlanma təməl alqoritmik strukturlardan biridir. Budaqlanma bir, yaxud bir neçə şərtin yoxlanmasına əsaslanır və həmin şərtlərin doğruluğundan asılı olaraq müəyyən əməliyyat yerinə yetirilir.
Python Operator – Logical Operators in Python
Operators in any programming language are the basic building blocks using which we can construct powerful, complex statements for problem solving.
Python offers different types of operators, like arithmetic operators, logical operators, relational operators and so on. In this post, let’s dive into logical operators in Python and learn how we can use them.
Python offers three logical or boolean operators, “and”, “or” and “not” operators. These work on one or more operands, and depending on their values, evaluate to True or False. Then decisions are made based on this.
Python “and” operator
The Python “and” operator is a binary operator, which means it requires two operands. The general syntax looks like this:
operand1 and operand2
The output is True if and only if both the operands are True. If any operand is False, then the output is False. Let’s see some examples:
Here we use the “and” operator to decide if a person can be considered a player in Squid Game or not.
The 2 operands for “and” are the variables person_has_debt and person_willing_to_play . Since the values for both are True, the output of the and expression is True and a new player object is created where we specify the player name and player number.
Now, what if the value for person_willing_to_play is False?
We know that “and” outputs True only if both operands are True. If either one is False, the output is False and the statements in the else clause get executed. We can add as many expressions as we want using “and”, for example:
if person_has_debt and person_willing_to_play and proper_age and total_player_capacity_not_full: player_obj = SquidGamePlayer("Sae-byok", 67) player_obj.show_details() else: print("Player not added to game")
The operand’s truth value is evaluated from left to right and output is False if any 1 operand is False, else the output is True.
Operands can be arithmetic or relational expressions (or any combination of the two), nested logical expressions, and so on.
Python “or” operator
The “or” operator is also a binary operator and needs 2 operands. The output of the “or” expression is True if any of its operands are True, else the output is False.
operand1 or operand2
Let’s look at some simple examples:
Here the operands for “or” are the output of the method has_high_traffic with input “some_road_name” and “another_road_name” .
For simplicity this method returns True or False at random. During the 1st execution, False is returned for both method calls and “or” evaluates to False as both operands are False.
During the 2nd execution, the random number is now 1 so the method call has_high_traffic(“some_road_name”) returns True. We know that if any operand of “or” is True then the final output is also True. So in this case the “or” expression is True and the statements in the if clause are executed.
Did you notice one thing here? Only the 1st method call was executed, and has_high_traffic(“another_road_name”) did not get invoked. Why? This is due to something called short-circuiting which we’ll learn about shortly.
Python “not” operator
The “not” is a unary operator, which means that it works with 1 operand and returns the inverted truth value for that operand.
not ( operand )
In simple terms, if the input is True, then the output is False and if the input is False, then the output is True.
This is simple when the operands are directly of type bool . However, the inputs can be numeric types, objects, lists and so on. In such cases, the output depends on how Python calculates the truth value for that entity.
How does Python calculate the truth value?
All the logical operators work with the truth value of their operands – but what exactly is a truth value?
We know that the bool type True represents True and False represents False. Python considers zero to be False and all other numbers, irrespective if they are positive or negative, are considered to be True.
Look at the examples shown below:
The truth value of entities in Python is computed on the basis of some standard rules, as defined in the “Truth value testing” portion of the documentation linked here.
So, now we know how the not operator is working in the following examples:
An empty list [] has zero length, so the truth value is False. Zeroes are False, in both cases the inverted value is True and 3 is True so not(3) is equivalent to not(True) which is False.
Short-circuiting of logical operators
Logical “and” and “or” operators in Python are short-circuited which means they evaluate only the bare minimum required to get the correct result. For example:
if expression1 and expression2 and expression3: #do something else: #do something else
If expression1 is False, we know that the final output of and is False. Then does it make sense to evaluate expression2 and expression3 ? Nope it does not make sense, and Python doesn’t do it either. It starts evaluating from left to right, as soon as an expression is False, the “and” evaluates to False, skipping the execution of the remaining operands.
The same thing happens for the “or” operator:
if expression1 or expression2 or expression3: #do something else: #do something else
If expression1 is True, then immediately the output of the “or” expression becomes True, ignoring the remaining 2 operands.
This saves spending unnecessary time on evaluating expressions whose output won’t affect the final output of the expression anyway.
A final note on how “and” and “or” work
In the beginning of this post, I mentioned that the output of “and” is True if and only if all of its operands are True – else the output is False, like the following:
Now let’s see a bit of what happens under the hood. and actually does not return a True or False value. Instead it returns one of its operands! This is mentioned in the documentation here, specifically this part, quoted from the documentation:
(Important exception: the Boolean operations or and and always return one of their operands.)
operand1 and operand2
So if operand1 is False, and returns operand1 , otherwise it returns operand2 . If operands are of type bool, then it is easy to understand. What if we have operands like the following:
What’s happening here? operand1 is 12 which is True, operand2 is 56 which is also True, so and returns operand2 which is 56.
Okay but how does this work in conditional statements like in if-else? Remember that 56 also has a truth value right? So and gives an output of 56, and now the truth value of 56 is used in the if-else. 56 is True so the if-clause is executed.
Similarly we have “or” that also returns one of its operands:
operand1 or operand2
It returns operand2 if operand1 is False, else it returns operand1 , as we can clearly see in the following snippet:
Wrapping up
In this post, we learnt about:
- The different logical operators in Python and how to use them with examples
- How Python calculates the truth value of entities
- What is short-circuiting
- How “and” and “or” operators work under the hood
Thank you very much for reading, I hope you enjoyed the article and learnt a few interesting facts related to logical operators in Python. Take care and happy coding!
Şərt operatoru
Buraya qədər yazdığımız proqramlarda biz xətti alqoritmlərdən istifadə etdik. Yəni proqramlarımızdakı əməliyyatlar ardıcıl şəkildə icra olundular. Lakin proqramlaşdırmada budaqlanma alqoritmlərindən də istifadə olunur. Başqa sözlə desək, proqramın icra olunma istiqaməti verilmiş şərtin yerinə yetirilib yetirilməməsindən asılı olaraq dəyişə bilir. Bunun üçün Python dilində if-else şərt operatoru nəzərdə tutulmuşdur.
if-else şərt operatorunun standart yazılış forması aşağıdakı kimidir:
if şərt: ifadə1 else: ifadə2
Bildiniyiniz kimi ingiliscə if sözü əgər, else isə əks halda kimi tərcümə olunur. Burada şərt kimi istənilən məntiqi ifadə istifadə oluna bilər. Şərtdən sonra operator başlığının sonunu bildirmək üçün iki nöqtə (:) qoyulmalıdır, bu simvol həmçinin else operatorundan sonra da yazılmalıdır. Buradakı ifadə1 və ifadə2 isə istənilən ifadə və ya ifadələr ardıcıllığı ola bilər. Beləliklə yuxarıdakı yazılışı bu cür oxuya bilərik:
Əgər şərt ödənilirsə ifadə1, əks halda ifadə2 icra olunsun.
Python dilinin if-else şərt konstruksiyası ilə bağlı üç önəmli məqamı qeyd edək:
- Konstruksiyada iki nöqtə (:) simvolunun yazılması zəruridir. Bu simvol operator başlığı ilə icra olunacaq ifadəni (və ya ifadələr ardıcıllığını) bir-birindən ayırır.
- İki nöqtədən sonra gələn sətir aralıqla (indent) verilməlidir. Skript fayllarında bu məsafə standart olaraq dörd boşluq qədər təyin edilmişdir.
- İki nöqtədən sonra eyni aralıqla gələn bütün sətrlər verilmiş şərt daxilində icra olunurlar.
İndi isə şərt operatorunu konkret misal üzərində tətbiq edək. Deyək ki, verilmiş tam ədədin cüt və ya tək olduğunu yoxlamaq və bu haqda ekrana məlumat çıxarmaq lazımdır.
Proqramı yazmağa başlamadan öncə gəlin hansı ədədlərin cüt olduğunu müəyyənləşdirək. Bildiyiniz kimi ikiyə qalıqsız bölünən ədədlər cüt ədədlərdir. Başqa sözlə desək ədədi ikiyə böləndə alınan qalıq sıfıra bərabərdirsə, bu ədəd cüt, əks halda tək ədəddir. Xatırlayırsınızsa əvvəlki dərslərimizin birində biz qalıqlı bölmə operatorunu (%) keçmişdik. İndi bu operator bizim işimizə yarayacaq:
>>> a=int(input("Ədədi daxil edin:")) Ədədi daxil edin:78 >>> if a % 2 == 0: print("Cüt") else: print("Tək") Cüt >>>
Nə baş verdi? Əvvəlcə biz istifadəçinin input() funksiyası ilə daxil etdiyi qiyməti int() funksiyasından istifadə edərək bir-başa int tipinə çevirdik və a dəyişəninə mənsub etdik. Bundan sonra bu dəyişənin qiymətini ikiyə böləndə qalığının sıfır olub-olmadığını if-else şərt operatorunun köməyilə yoxladıq. Əgər qalıq sıfıra bərabərdirsə print() funksiyası ilə ekrana Cüt, deyilsə Tək məlumatını çıxardıq. Bu qədər sadə.
Keçək başqa bir misala. Azərbaycanın paytaxtının hansı şəhər olduğunu soruşan proqram tərtib edək. Düzgün cavab verəni alqışlayaq, səhv edəni də öyrədək. Gəlin bu proqramı skriptdə yazaq. Bunu necə etməyi artıq bilirsiniz:
sual = "Azərbaycanın paytaxtı hansı şəhərdir? " cavab = input(sual) if (cavab == "Bakı") or (cavab == "bakı"): print("Təbriklər! Cavabınız doğrudur.") else: print("Təəssüflər! Cavabınız yanlışdır.") print("Doğru cavab: Bakı.")
Bu proqramı icra etmədən öncə gəlin onu incələyək. Burada biz əvvəlcə sual dəyişəninə vermək istədiyimiz sualı mənimsətdik. Sonra istifadəçinin klaviaturdan daxil etdiyi cavabı cavab dəyişənində yadda saxladıq. Bundan sonra isə cavab dəyişəninin qiymətini həqiqi cavabla müqayisə etdik və bu müqayisənin nəticəsindən asılı olaraq ekrana müvafiq məlumatlar çıxardıq.
Burada daha bir neçə məqama diqqətinizi cəlb etmək istəyirəm. Proqramdan da gördüyünüz kimi, biz şərt kimi mürəkkəb məntiqi ifadədən istifadə etdik. Bunu ona görə etdik ki, istifadəçi şəhər adını daxil edərkən ilk hərfi kiçik də yaza bilər. Burada məntiqi birləşdirici (məntiq operatoru) kimi or (və ya) operatorundan istifadə etdik. Və biz burda sadə ifadələri mötərizə daxilində yazdıq. Əslində buna məcbur deyildik, sadəcə mürəkkəb ifadə bizim üçün daha aydın olsun deyə bunu etdik.
Daha bir məqam isə else: operatorundan sonra iki ifadənin icra olunmasıdır. Xatırlayırsınızsa yuxarıda qeyd etmişdik ki, iki nöqtədən sonra eyni aralıqla gələn bütün sətrlər verilmiş şərt daxilində icra olunurlar. Eyni qayda if (şərt): operatorundan sonra eyni aralıqla gələn sətrlər üçün də keçərlidir.
Proqramı icra edin və suala doğru və yanlış cavablar verərək nəticələri yoxlayın.
Şərt operatoru
Alqoritmlərdə bir neçə mümkün hərəkətdən birinin seçilməsinə budaqlanma vasitəsilə nail olunur. Budaqlanma təməl alqoritmik strukturlardan biridir. Budaqlanma bir, yaxud bir neçə şərtin yoxlanmasına əsaslanır və həmin şərtlərin doğruluğundan asılı olaraq müəyyən əməliyyat yerinə yetirilir.
Proqramlaşdırma dillərinin hamısında budaqlanma yaradan xüsusi operatorlar vardır. Belə operatorlara şərt operatorları deyilir. Əksər dillərdə olduğu kimi, Python dilində də şərt if (əgər) operatoru vasitəsilə verilir. Şərt operatorunu sxematik olaraq belə göstərmək olar: Əgər şərt doğru olarsa, birinci fraqment, əks halda ikinci fraqment yerinə yetiriləcək. if operatorunun else hissəsi olmaya da bilər. Ru halda şərt yalan olduqda if operatorundan sonrakı operator yerinə yetirilir.
Məsələn:
Bu misalda if operatorundan sonra gələn şərt ödənilirsə, proqram çıxışa «a mənfi deyil» verəcək. Əks halda ekrana «a mənfidir» çıxarılacaq.
Python dilində şərt operatorunda şərtdən asılı olaraq icra olunan, yaxud olunmayan fraqmenti seçdirmək üçün mötərizə, yaxud begin-end açar sözlərindən istifadə olunmur. Bəs onda Python icra olunacaq fraqmentin sərhədini necə müəyyənləşdirir? Sadəcə, sətrin başlanğıcındakı boşluqlara, yəni sətrin sağa sürüşdürülməsinə görə! Deməli, Python proqramlarında boşluqlar yalnız kodun gözəl görünüşünə xidmət etmir, həm də onun sintaksisinin bir tələbidir.
Şərti göstərmək üçün şərt və ya müqayisə işarələrindən istifadə olunur.
Məsələn, a >= 0 (a böyükdür və ya bərabərdir 0), age == 10 (age bərabərdir 10).
and (və) və or (və ya) məntiqi əməlləri vasitəsilə bir neçə şərti birləşdirməklə proqram kodunu qısaltmaq olur.
Birinci sətirdəki şərtlərdən hər hansı biri doğru olarsa, ikinci sətirdəki operator, əks halda dördüncü sətirdəki operator yerinə yetiriləcək. Bu kodu bir az da qısaltmaq olar:
Comments are closed, but trackbacks and pingbacks are open.