البرمجة بلغة بايثون (الفصل الخامس)
- أبريل 12, 2023
- تم النشر بواسطة: كود خانة
- الفئة: البرمجة بلغة بايثون
العمليات المنطقية (Logic operations):
في بداية هذه الدورة تعلمنا انه احد انواع البيانات هو البيانات التي تكون قيمها منطقية True or False والتي تسمى في لغة بايثون boolean وفي هذا الدرس سنتعلم عمليات المقارنة والعمليات المنطقية بين كائنين في لغة بايثون ، وتكون نتيجة هذه المقارنة قيمة منطقية ( صح True او خطأ False )
عمليات المقارنة في لغة بايثون هي نفسها العمليات الرياضية التي تعلمناها جميعنا في الرياضيات في المدرسة والتي تشمل:
- اصغر من > وايضا اصغر او يساوي =>
- اكبر من < وايضا اكبر او يساوي =<
- يساوي ==
- لايساوي =!
ولتوضيح عمليات المقارنة اكثر لنفترض ان لدينا المتغيرين التاليين
1 2 |
x = 4 y = 7 |
لو كتبنا هل x اكبر من y سيكون الناتج خطأ False
1 |
x > y |
1 |
False |
وكذلك الحال للامثلة التالية
1 2 3 4 5 |
x < y # True x <= y # True y <= x # False y == x # False y != x # True |
وايضا لدينا العمليات المنطقية مثل عمليات and ويرمز لها & وعمليات or ويرمز لها | حيث تكون هذه العمليات بين عمليتين منطقيتين او اكثر
من صفات and انها:
- تكون قيمتها False في حال كانت قيمة الطرفين False او اي طرف من العمليتين False
- وتكون True فقط في حالة الطرفين True
اما or :
- فتكون True في حالة كانت قيمة الطرفين True او اي طرف True
- وتكون False فقط في حالة الطرفين False
ولتوضيح العمليات المنطقية اكثر لنفترض ان لدينا المتغيرين التاليين
1 2 |
x = 4 y = 7 |
لو كتبنا شرطين هل x اصغر من y و هل x لا تساوي y سيكون الناتج True ( لأن ناتج الشرط الاول True وناتج الشرط الثاني ايضاً True وتعلمنا في الجدول السابق ان ناتج True and True هو True
1 2 3 4 5 |
# True and True x < y and x != y # True # Because the result of x < y is (True) # And the result of x != y is (True) # True and True is True |
1 |
True |
وكذلك الحال للامثلة التالية
1 2 3 4 5 6 7 8 |
# False and True x == y and x < y # False # True or False x < y or y == x # True # False or False x >= y or y < x # False |
ويوجد لدينا في بايثون عملية اخرى تسمى not وتستخدم للنفي او العكس وسنتعلم كيف نستفاد منها لاحقا ومثال عليها
عكس False
1 |
not False |
1 |
True |
عكس True
1 |
not True |
1 |
False |
ايضا يجب ان ننتبه في عمليات المقارنة فيجب ان يكون النوعان من نفس الصنف مثلا رقم مع رقم حتى لو كان احدهم صحيح والاخر كسري او بالامكان ان تكون المقارنة بين نص مع نص حسب الحروف الابجدية او يمكن ان تكون المقارنة بين قائمتين ولكن لا يمكن ان تكون المقارنة بين رقم مع نص لان الناتج سيكون خطأ Error وكذلك لايمكن ان تكون المقارنة بين رقم وقائمة والامثلة التالية توضح ذلك
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
x = 4 y = 7.5 y > x # True a = "Ahmed" z = "Zaid" a > z # False l = [1, 3 , 5] m = [2 , 4 , 6] l < m # True x = 4 l = [1, 3 , 5] x < l # Error |
مساحة تجريبية:
تمرين برمجي (1):
1- قم بطباعة هل True تساوي False
2- قم بطباعة هل 2- ضرب 10 لا تساوي 20
3- قم بطباعة هل python تساوي Python بالحرف الكبير
4- قم بطباعة هل True يساوي 1
5- اذا كان لدينا x = -7 * 3 اطبع هل x اكبر او يساوي 20-
#1 Comparison of booleans
print(__________________)
#2 Comparison of integers
print(__________________)
#3 Comparison of strings
print(__________________)
#4 Compare a boolean with a numeric
print(__________________)
#5 Comparison of integers
x = -7 * 3
print(__________________)
#1 Comparison of booleans
print(True == False)
#2 Comparison of integers
print(-2*10 != 20)
#3 Comparison of strings
print("python" == "Python")
#4 Compare a boolean with a numeric
print(True == 1)
#5 Comparison of integers
x = -7 * 3
print(x >= -20)
Ex().has_equal_ast(exact=False)
success_msg("اجابة صحيحة، احسنت")
تمرين برمجي (2):
لدينا المتغيرين التاليين
1 2 |
my_room = 22.0 your_room = 16.0 |
1- اطبع هل my_room اكبر من 12 and اصغر من 25
2- اطبع هل ضعف my_room اكبر من ثلاث اضعاف your_room
my_room = 22.0
your_room = 16.0
#1 my_room bigger than 12 and smaller than 25?
print(_____________________________)
#2 Double my_room bigger than triple your_room
print(_____________________________)
my_room = 22.0
your_room = 16.0
#1 my_room bigger than 12 and smaller than 25?
print(my_room > 12 and my_room < 25)
#2 Double my_room bigger than triple your_room
print(my_room * 2 > your_room * 3)
Ex().has_equal_ast(exact=False)
success_msg("اجابة صحيحة، احسنت")
الشروط (if, elif, else):
الشروط من المواضيع المهمة جدا لتعلم اي لغة برمجية فهي تمكننا من السيطرة والتحكم في تنفيذ الكود حسب شروط خاصة نحتاجها في عملنا
الشرط في لغة بايثون يتكون من خمسة اجزاء اساسية وهي:
1- كلمة if وتعني اذا
2- ثم بعدها عملية مقارنة من العمليات التي تعلمناها في بداية هذا الدرس والتي تكون نتيجتها اما True او False
3- ثم بعد عملية المقارنة نقطتين :
4- ثم في الاسفل مسافة
5- ثم نكتب الكود الذي نريد تنفيذه في حال تطابق الشرط يعني في حال كانت قيمة المقارنة True
وكما موضح في الكود التالي مع ملاحظة انه لن يتم تنفيذ الشرط في حال كانت قيمة المقارنة False
1 2 3 |
x = 10 if x > 5: print ("x is bigger than 5") |
1 |
x is bigger than 5 |
الكود الذي في الاعلى معناه ببساطه (1) اذا كانت (2) x اكبر من 5 (3) قم بالتالي : (4) مسافة لتوضيح ان الكود التالي راجع للشرط (5) اطبع الجملة x هي اكبر من 5
لاحظ انه في ناتج الكود تم طباعة الجملة “x is bigger than 5” وذلك لان الشرط تحقق (وهو x اكبر من 5)
لكن ماذا لو كان قيمة x=3 يعني اصغر من خمسة؟
1 2 3 |
x = 3 if x > 5: print ("x is bigger than 5") |
من الواضح انه لم يتم طباعة اي شيء بسبب عدم تحقق الشرط وفي هذه الحالة سنحتاج الى استخدام else وتعني اي شيء اخر غير الشرط مثال على ذلك لدينا متغير x قيمته الرقم 7 ونريد صناعة شرطين
1- الشرط الاول نريد طباعة كلمة زوجي EVEN في حال كانت باقي قسمة x على 2 هو 0
2- الشرط الاخر نريد طباعة فردي ODD لأي رقم لاينطبق عليه الشرط الاول يعني لأي شيء اخر
1 2 3 4 5 6 7 |
x = 7 if x % 2 == 0: print ("x is EVEN number") else: print("x is ODD number") |
1 |
is ODD number |
وكما نلاحظ بما انه لم ينطبق الشرط الاول تمت طباعة الشرط الاخر else وضع في بالك ايضاً ان else لاتأخذ شرط مثل if بل هي تشمل كل الاحتمالات الاخرى غير احتمال الشرط if
لكن ماذا لو اردنا اضافة اكثر من شرط للجملة؟ هنا سنحتاج الى استخدام elif وهي مختصر لكلمة else if وتعني شرط اخر ومثال على ذلك
لدينا متغير اسمه s ونريد ان نضع شرطين للجملة بالاضفة لشرط ثالث يشمل الاحتمالات الاخرى
- الشرط الاول هو اذا كانت s تقبل القسمة على 2 اطبع s قابلة للقسمة على 2
- الشرط الثاني هو اذا كانت s تقبل القسمة على 3 اطبع s قابلة للقسمة على 3
- اخيرا جملة else في حال عدم تطابق الشرطين الاول والثاني اطبع s لاتقبل القسمة لاعلى 2 ولا على 3
1 2 3 4 5 6 7 8 9 10 |
s = 3 if s % 2 == 0: print("s is divisible by 2") elif s % 3 == 0: print("s is divisible by 3") else: print("s is neither divisible by 2 nor by 3") |
1 |
s is divisible by 3 |
وكما لاحظنا في الكود ان الشرط الاول لم يتم تنفيذه لان قيمته False وتم تنفيذ الشرط الثاني لأن قيمته True اما else يتم تنفيذها فقط في حالة عدم تطابق اي شرط لانها تشمل باقي الاحتمالات الاخرى اما في حال تطابق اي شرط فلا يتم تنفيذها ابدا
للتذكير مرة اخرى: الشرط الثاني اذا كانت قيمته True سيعمل في حال عدم عمل الشرط الاول ، يعني فقط في حال كانت قيمة الشرط الاول False سوف يعمل هذا الشرط اما في حال كانت قيمة الشرط الاول True فسوف يعمل فقط الشرط الاول وكل شيء بعده لن يعمل والكود التالي مثال على ذلك
1 2 3 4 5 6 7 8 9 10 |
s = 6 if s % 2 == 0: print("s is divisible by 2") elif s % 3 == 0: print("s is divisible by 3") else: print("s is neither divisible by 2 nor by 3") |
1 |
s is divisible by 2 |
شجرة الشروط:
من الممكن ان يكون الكود الذي نريد تنفيذه في حال تحقق الشرط اي شيء ، فمثلاً قد يكون الكود امر طباعة كما في المثال السابق او قد يكون عملية رياضية او انشاء متغير او اي عملية برمجية اخرى
ويمكن ايضا ان ننشئ شجرة من الشروط والمقصود بذلك هو انشاء عدة شروط متداخلة مثلا لدينا متغير اسمه s
1- الشرط الاول الرئيسي اذا كانت قيمة s عدد زوجي ادخل الى الشرط التالي
A- الشرط الاول داخل الشرط الرئيسي هو اذا كانت قيمة s اكبر او يساوي 10 اطبع ان s عدد زوجي وكبير واطرح 4 من s واطبع الناتج
B- الشرط الثاني داخل الشرط الرئيسي هو اذا كانت قيمة s اكبر من 5 واصغر من 10 اطبع ان s عدد زوجي ومتوسط ثم قم بأضافة 2 لـ s واطبع الناتج
C- الشرط الاخر ( غير الشرطين الاول والثاني ) اطبع ان s زوجي وصغير ثم قم بأضافة 4 لـ s واطبع الناتج
2- اما في حال لم يتحقق الشرط الرئيسي الاول وهو s زوجي قم بطباعة الشرط الرئيسي الاخر وهو s عدد فردي ولفهم ذلك بسهولة الكود التالي يوضح كل ذلك
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
s = 6 # 1 main condition if s % 2 == 0: # True # A condition if s >= 10: print('s is even and large', s) print('the new value of s is: ', s - 4) # B condition elif s > 5 and s < 10: # True print('s is even and medium', s) print('the new value of s is: ', s + 2) # C else else: print('s is even and small', s) print('the new value of s is: ', s + 4) # 2 main else else: print('s is odd', s) |
1 2 |
s is even and medium 6 the new value of s is: 8 |
لاحظ في الكود السابق انه تم تنفيذ الشرط الرئيسي الاول ثم تم تنفيذ الشرط الفرعي B
ملاحظة: انتبه للمسافات دائما لان بايثون حساسة جداً للمسافات فهي تعني ان هذا الكود يرجع لهذا الشرط وايضا دائما رتب شروطك بشكل واضح وسهل الفهم والقراءة وحاول ان تكتب ملاحظات بأستخدام # عن كل شرط وما الذي سيفعله في حال تنفيذه من اجل فهم دوره ومن اجل ان يصبح واضح للأشخاص الاخرين الذين يعملون معك على نفس المشروع او البرنامج خاصة في حالة كنت تكتب شروط عديدة ومتداخلة ومعقدة لان ذلك سيسهل المهمة كثيراً
تمرين برمجي (3):
لدينا الكود الغير كامل التالي
1 2 3 4 |
room = "bed" if room == "kit" : print("looking around in the kitchen.") |
- قم بأضافة elif والتي شرطها ان يكون اسم الغرفة bed وتطبع الجملة التالية في حال تحقق الشرط
looking around in the bedroom.
- قم بأضافة else في حالة عدم تحقق الشرط الاول والثاني والتي تطبع الجملة التالية
looking around elsewhere.
room = "bed"
if room == "kit":
print("looking around in the kitchen.")
___________________
________________________________
______
________________________________
room = "bed"
if room == "kit":
print("looking around in the kitchen.")
elif room == "bed":
print("looking around in the bedroom.")
else:
print("looking around elsewhere.")
Ex().has_equal_ast(exact=False)
success_msg("اجابة صحيحة، احسنت")
تمرين برمجي (4):
لدينا الكود الغير كامل التالي
1 2 3 4 |
area = 8.0 if area > 15 : print("big place!") |
- قم بأضافة elif والتي شرطها ان يكون area اكبر من 10 وتطبع الجملة التالية
medium size, nice!
- قم باضافة else في حال عدم تحقق الشرط الاول والثاني والتي تطبع الجملة التالية
pretty small.
area = 8
if area > 15:
print("big place!")
_______________
___________________________
_____
___________________________
area = 8
if area > 15:
print("big place!")
elif area > 10:
print("medium size, nice!")
else:
print("pretty small.")
Ex().has_equal_ast(exact=False)
success_msg("اجابة صحيحة، احسنت")