تعلم لغة Python الفصل 5 : if الشرطية الجزء 1

sparrow
0

 



الفصل : 5

الجزء : 1

العنوان : if الشرطية





البرمجة غالباً ما تتضمن فحص مجموعة من الشروط واتخاذ القرار المناسب بناءً على تلك الشروط. بيان if في Python يسمح لك بفحص الحالة الحالية للبرنامج والاستجابة بشكل مناسب لتلك الحالة.


في هذا الفصل، ستتعلم كيفية كتابة اختبارات شرطية، والتي تتيح لك التحقق من أي شرط يهمك. ستتعلم كيفية كتابة بيانات if بسيطة، وستتعلم كيفية إنشاء سلسلة أكثر تعقيداً من بيانات if لتحديد متى تكون الشروط الدقيقة التي تريدها موجودة. ثم ستطبق هذا المفهوم على القوائم، بحيث يمكنك كتابة حلقة for التي تتعامل مع معظم العناصر في القائمة بطريقة معينة ولكن تتعامل مع عناصر معينة ذات قيم محددة بطريقة مختلفة.


مثال بسيط


المثال التالي يوضح كيف تتيح لك اختبارات if الاستجابة للمواقف الخاصة بشكل صحيح. تخيل أن لديك قائمة من السيارات وتريد طباعة اسم كل سيارة. أسماء السيارات هي أسماء علم، لذا يجب طباعة أسماء معظم السيارات بالحروف الكبيرة الأولى. ومع ذلك، يجب طباعة القيمة 'bmw' بأحرف كبيرة بالكامل. الكود التالي يقوم بالتكرار عبر قائمة أسماء السيارات ويبحث عن القيمة 'bmw'. كلما كانت القيمة 'bmw'، يتم طبعها بأحرف كبيرة بدلاً من الأحرف الكبيرة الأولى:



تقوم الحلقة في هذا المثال أولاً بفحص ما إذا كانت القيمة الحالية للسيارة هي 'bmw'. إذا كانت كذلك، يتم طبع القيمة بأحرف كبيرة. إذا كانت قيمة السيارة أي شيء آخر غير 'bmw'، يتم طبعها بالأحرف الكبيرة الأولى:


يجمع هذا المثال بين عدد من المفاهيم التي ستتعلم عنها في هذا الفصل. لنبدأ بالنظر في أنواع الاختبارات التي يمكنك استخدامها لفحص الشروط في برنامجك.


الاختبارات الشرطية (Conditional Tests)


في قلب كل بيان if هناك تعبير يمكن تقييمه على أنه True أو False ويطلق عليه اختبار شرطي. تستخدم Python القيم True و False لتحديد ما إذا كان يجب تنفيذ الكود في بيان if أم لا. إذا تم تقييم الاختبار الشرطي على أنه True، تقوم Python بتنفيذ الكود الذي يلي بيان if. إذا تم تقييم الاختبار على أنه False، تتجاهل Python الكود الذي يلي بيان if.


التحقق من المساواة


تقوم معظم الاختبارات الشرطية بمقارنة القيمة الحالية لمتغير ما بقيمة محددة تهمك. أبسط اختبار شرطي يتحقق مما إذا كانت قيمة متغير ما تساوي القيمة التي تهمك:


تقوم السطر الأول بتعيين قيمة 'bmw' للمتغير car باستخدام علامة يساوي واحدة، كما رأيت عدة مرات من قبل. السطر التالي يتحقق مما إذا كانت قيمة car هي 'bmw' باستخدام علامتي يساوي (==). يقوم عامل المساواة بإرجاع True إذا كانت القيم على جانبي العامل متطابقة، و False إذا لم تكن متطابقة. القيم في هذا المثال متطابقة، لذا تقوم Python بإرجاع True.


عندما تكون قيمة car أي شيء آخر غير 'bmw'، يقوم هذا الاختبار بإرجاع False:




علامة يساوي واحدة هي في الحقيقة عبارة؛ يمكنك قراءة السطر الأول من الكود هنا على أنه "عيّن قيمة car لتكون 'audi'". من ناحية أخرى، تسأل علامتا يساوي سؤالاً: "هل قيمة car تساوي 'bmw'؟". تستخدم معظم لغات البرمجة علامات يساوي بهذه الطريقة.


تجاهل الحالة عند التحقق من المساواة


التحقق من المساواة حساس لحالة الأحرف في Python. على سبيل المثال، لا تعتبر قيمتان بحروف مختلفة كبيرة وصغيرة متساويتين:


إذا كانت حالة الأحرف تهمك، فإن هذا السلوك مفيد. ولكن إذا كانت حالة الأحرف غير مهمة وبدلاً من ذلك تريد فقط اختبار قيمة المتغير، يمكنك تحويل قيمة المتغير إلى حروف صغيرة قبل إجراء المقارنة:


سيعيد هذا الاختبار True بغض النظر عن كيفية تنسيق القيمة 'Audi' لأن الاختبار الآن غير حساس لحالة الأحرف. لا يقوم الأسلوب lower() بتغيير القيمة الأصلية المخزنة في car، لذا يمكنك إجراء هذا النوع من المقارنة دون التأثير على المتغير الأصلي:


نقوم أولاً بتعيين السلسلة 'Audi' بالصيغة الكبيرة للمتغير car. ثم، نقوم بتحويل قيمة car إلى حروف صغيرة ونقارن القيمة بالحروف الصغيرة بالسلسلة 'audi'. تتطابق السلسلتان، لذا تقوم Python بإرجاع True. يمكننا أن نرى أن القيمة المخزنة في car لم تتأثر بأسلوب lower().


تفرض المواقع الإلكترونية قواعد معينة للبيانات التي يدخلها المستخدمون بطريقة مماثلة لهذا. على سبيل المثال، قد يستخدم الموقع اختباراً شرطياً مثل هذا للتأكد من أن كل مستخدم لديه اسم مستخدم فريد حقاً، وليس مجرد تباين في حالة الأحرف لاسم مستخدم شخص آخر. عندما يقوم شخص ما بتقديم اسم مستخدم جديد، يتم تحويل اسم المستخدم الجديد إلى حروف صغيرة ومقارنته بالإصدارات الصغيرة لجميع أسماء المستخدمين الموجودة. أثناء هذا الفحص، سيتم رفض اسم المستخدم مثل 'John' إذا كان أي تباين لـ 'john' مستخدم بالفعل.


التحقق من عدم المساواة


عندما تريد تحديد ما إذا كانت قيمتان غير متساويتين، يمكنك استخدام عامل عدم المساواة (!=). لنستخدم بيان if آخر لفحص كيفية استخدام عامل عدم المساواة. سنخزن طلب بيتزا في متغير ثم نطبع رسالة إذا لم يطلب الشخص الأنشوجة:


يقارن هذا الكود قيمة requested_topping بالقيمة 'anchovies'. إذا لم تتطابق هاتان القيمتان، تقوم Python بإرجاع True وتنفذ الكود الذي يلي بيان if. إذا تطابقت القيمتان، تقوم Python بإرجاع False ولا تنفذ الكود الذي يلي بيان if. نظراً لأن قيمة requested_topping ليست 'anchovies'، يتم تنفيذ دالة print():


معظم التعبيرات الشرطية التي ستكتبها ستختبر المساواة، ولكن أحياناً ستجد أنه من الأكثر كفاءة اختبار عدم المساواة.


المقارنات العددية (Numerical Comparisons)


اختبار القيم العددية واضح إلى حد ما. على سبيل المثال، الكود التالي يتحقق مما إذا كان الشخص يبلغ من العمر 18 عاماً:


يمكنك أيضاً اختبار لمعرفة ما إذا كان الرقمين غير متساويين. على سبيل المثال، الكود التالي يطبع رسالة إذا لم تكن الإجابة المعطاة صحيحة:


ينجح الاختبار الشرطي لأن قيمة answer (17) لا تساوي 42. نظراً لنجاح الاختبار، يتم تنفيذ كتلة الكود المسافة البادئة:

That is not the correct answer. Please try again!


يمكنك تضمين مقارنات رياضية متنوعة في بيانات if الخاصة بك أيضاً، مثل أقل من، أقل من أو يساوي، أكبر من، وأكبر من أو يساوي:


يمكن استخدام كل مقارنة رياضية كجزء من بيان if، مما يمكن أن يساعدك على اكتشاف الشروط الدقيقة التي تهمك.


التحقق من الشروط المتعددة


قد ترغب في فحص شروط متعددة في نفس الوقت. على سبيل المثال، قد تحتاج أحياناً إلى شرطين صحيحين لاتخاذ إجراء. في أوقات أخرى، قد تكون راضياً عن شرط واحد فقط يكون صحيحاً. يمكن للكلمات الرئيسية and و or مساعدتك في هذه المواقف.


استخدام and للتحقق من الشروط المتعددة


للتحقق مما إذا كانت شرطين كلاهما صحيحين في نفس الوقت، استخدم الكلمة الرئيسية and للجمع بين الاختبارين الشرطيين؛ إذا نجح كل اختبار، يتم تقييم التعبير الكلي إلى True. إذا فشل أي اختبار أو فشلا كلاهما، يتم تقييم التعبير إلى False.


على سبيل المثال، يمكنك التحقق مما إذا كان شخصان كلاهما فوق سن 21 باستخدام الاختبار التالي:


أولاً، نحدد عمرين، age_0 و age_1


. ثم نتحقق مما إذا كان كلا العمرين 21 أو أكبر. ينجح الاختبار على اليسار، ولكن يفشل الاختبار على اليمين، لذا يتم تقييم التعبير الشرطي الكلي إلى False. ثم نقوم بتغيير age_1 إلى 22. قيمة age_1 الآن أكبر من 21، لذا تنجح كلا الاختبارين الفرديين، مما يجعل التعبير الشرطي الكلي يتم تقييمه على أنه True.

لتحسين القابلية للقراءة، يمكنك استخدام الأقواس حول الاختبارات الفردية، ولكنها ليست مطلوبة. إذا استخدمت الأقواس، سيبدو اختبارك على النحو التالي:



استخدام or للتحقق من الشروط المتعددة


تتيح لك الكلمة الرئيسية or التحقق من الشروط المتعددة كذلك، لكنها تنجح عندما ينجح أحد الاختبارات الفردية أو كلاهما. يفشل تعبير or فقط عندما يفشل كلا الاختبارين الفرديين.


لنعتبر عمرين مرة أخرى، ولكن هذه المرة سنبحث فقط عن شخص واحد يكون أكبر من 21:


نبدأ بعمرين مرة أخرى. نظرًا لأن الاختبار لعمر age_0 ينجح، يتم تقييم التعبير الكلي إلى True. ثم نقلل عمر age_0 إلى 18. في الاختبار النهائي، تفشل كلا الاختبارين الآن ويتم تقييم التعبير الكلي إلى False.


التحقق مما إذا كانت قيمة في قائمة


أحياناً يكون من المهم التحقق مما إذا كانت قائمة تحتوي على قيمة معينة قبل اتخاذ إجراء. على سبيل المثال، قد ترغب في التحقق مما إذا كان اسم مستخدم جديد موجود بالفعل في قائمة أسماء المستخدمين الحالية قبل إتمام تسجيل شخص ما في موقع إلكتروني. في مشروع خرائط، قد ترغب في التحقق مما إذا كان موقع معين موجود بالفعل في قائمة المواقع المعروفة.


لمعرفة ما إذا كانت قيمة معينة موجودة بالفعل في قائمة، استخدم الكلمة الرئيسية in. دعنا نفكر في بعض الكود الذي قد تكتبه لبيتزا. سنقوم بعمل قائمة بالطبقات التي طلبها العميل للبيتزا ثم نتحقق مما إذا كانت بعض الطبقات موجودة في القائمة.



تطلب الكلمة الرئيسية in من Python التحقق من وجود 'mushrooms' و 'pepperoni' في قائمة requested_toppings. هذه التقنية قوية جداً لأنك يمكنك إنشاء قائمة بالقيم الأساسية، ثم تحقق بسهولة مما إذا كانت القيمة التي تختبرها تطابق إحدى القيم في القائمة.


التحقق مما إذا كانت قيمة ليست في قائمة


في أوقات أخرى، من المهم معرفة ما إذا كانت قيمة لا تظهر في قائمة. يمكنك استخدام الكلمة الرئيسية not في هذا الوضع. على سبيل المثال، اعتبر قائمة بالمستخدمين الممنوعين من التعليق في منتدى. يمكنك التحقق مما إذا كان المستخدم محظوراً قبل السماح لهذا الشخص بتقديم تعليق:


يقرأ بيان if هنا بشكل واضح. إذا كانت قيمة user ليست في قائمة banned_users، تقوم Python بإرجاع True وتنفذ السطر المسافة البادئة. المستخدم 'marie' ليس في قائمة banned_users، لذا ترى رسالة تدعوها إلى تقديم رد:

Marie, you can post a response if you wish.



التعبيرات البوليانية (Boolean Expressions)


أثناء تعلمك المزيد عن البرمجة، ستسمع مصطلح تعبير بولياني في مرحلة ما. التعبير البولياني هو مجرد اسم آخر للاختبار الشرطي. القيمة البوليانية هي إما True أو False، تماماً مثل قيمة التعبير الشرطي بعد تقييمه.


تستخدم القيم البوليانية غالباً لتتبع حالات معينة، مثل ما إذا كانت اللعبة قيد التشغيل أو ما إذا كان المستخدم يمكنه تحرير محتوى معين على موقع إلكتروني:


توفر القيم البوليانية طريقة فعالة لتتبع حالة البرنامج أو حالة معينة هامة في برنامجك.


جربها بنفسك


تمرين 5-1. اختبارات شرطية

اكتب سلسلة من الاختبارات الشرطية. اطبع بياناً يصف كل اختبار وتوقعك لنتائج كل اختبار. يجب أن يبدو الكود الخاص بك كما يلي:


انظر عن كثب إلى نتائجك، وتأكد من أنك تفهم لماذا يتم تقييم كل سطر على أنه True أو False. أنشئ على الأقل 10 اختبارات. يجب أن يكون لديك على الأقل 5 اختبارات يتم تقييمها إلى True و5 اختبارات أخرى يتم تقييمها إلى False.


تمرين 5-2. المزيد من الاختبارات الشرطية

لا تحتاج إلى تقييد عدد الاختبارات التي تنشئها بـ 10. إذا كنت تريد تجربة المزيد من المقارنات، اكتب المزيد من الاختبارات وأضفها إلى conditional_tests.py. يجب أن يكون لديك على الأقل نتيجة واحدة True ونتيجة واحدة False لكل مما يلي:

- اختبارات للمساواة وعدم المساواة مع السلاسل النصية

- اختبارات باستخدام الدالة lower()

- اختبارات عددية تتضمن المساواة وعدم المساواة، الأكبر من والأصغر من، الأكبر من أو يساوي، والأصغر من أو يساوي

- اختبارات باستخدام الكلمة الرئيسية and و or

- اختبار ما إذا كانت عنصر موجود في قائمة

- اختبار ما إذا كانت عنصر غير موجود في قائمة


 


ال if Statements


عندما تفهم الاختبارات الشرطية، يمكنك البدء في كتابة if statements. توجد عدة أنواع مختلفة من if statements، واختيارك لنوع if statement يعتمد على عدد الشروط التي تحتاج إلى اختبارها. لقد رأيت عدة أمثلة لـ if statements في المناقشة حول الاختبارات الشرطية، ولكن الآن دعنا نتعمق أكثر في الموضوع.


ال if Statements بسيطة


أبسط نوع من if statement يحتوي على اختبار واحد وعمل واحد:



يمكنك وضع أي اختبار شرطي في السطر الأول وأي عمل في الكتلة المسافة البادئة التالية للاختبار. إذا تم تقييم الاختبار الشرطي إلى True، تقوم Python بتنفيذ الكود الذي يلي if statement. إذا تم تقييم الاختبار إلى False، تتجاهل Python الكود الذي يلي if statement.


لنقل أننا لدينا متغير يمثل عمر الشخص، ونريد أن نعرف ما إذا كان هذا الشخص مؤهلاً للتصويت. الكود التالي يختبر ما إذا كان الشخص يمكنه التصويت:



تتحقق Python من ما إذا كانت قيمة age أكبر من أو تساوي 18. إذا كان الأمر كذلك، تقوم Python بتنفيذ استدعاء print() المسافة البادئة:


تلعب المسافة البادئة نفس الدور في if statements كما كانت في for loops. جميع السطور ذات المسافة البادئة بعد if statement ستنفذ إذا نجح الاختبار، وسيتم تجاهل الكتلة الكاملة من السطور ذات المسافة البادئة إذا لم ينجح الاختبار.


يمكنك أن يكون لديك عدد من السطور كما تريد في الكتلة التي تلي if statement. لنضيف سطر آخر من المخرجات إذا كان الشخص مؤهلاً للتصويت، يسأله عما إذا كان قد سجل للتصويت بعد:


ينجح الاختبار الشرطي، وكلا استدعاءي print() يكونان مسافة بادئة، لذلك تتم طباعة كلا السطرين:


إذا كانت قيمة age أقل من 18، فلن ينتج هذا البرنامج أي مخرجات.


ال if-else Statements


غالباً، سترغب في اتخاذ إجراء واحد عند نجاح اختبار شرطي وإجراء مختلف في جميع الحالات الأخرى. تجعل صياغة if-else في Python هذا ممكناً. كتلة if-else تشبه if statement البسيطة، ولكن else statement تتيح لك تعريف إجراء أو مجموعة من الإجراءات التي يتم تنفيذها عندما يفشل الاختبار الشرطي.


سنعرض نفس الرسالة التي عرضناها سابقاً إذا كان الشخص مؤهلاً للتصويت، ولكن هذه المرة سنضيف رسالة لأي شخص ليس مؤهلاً للتصويت:


إذا نجح الاختبار الشرطي، يتم تنفيذ أول كتلة مسافة بادئة لاستدعاءات print(). إذا تم تقييم الاختبار إلى False، يتم تنفيذ كتلة else. نظراً لأن العمر أقل من 18 هذه المرة، يفشل الاختبار الشرطي ويتم تنفيذ الكود في كتلة else:


يعمل هذا الكود لأنه يحتوي على حالتين محتملتين فقط لتقييمهما: الشخص إما مؤهل للتصويت أو غير مؤهل للتصويت. تعمل بنية if-else بشكل جيد في الحالات التي تريد فيها أن تقوم Python دائماً بتنفيذ واحد من اثنين من الإجراءات المحتملة. في سلسلة if-else بسيطة كهذه، سيتم دائماً تنفيذ أحد الإجرائين.


سلسلة if-elif-else


غالباً، ستحتاج إلى اختبار أكثر من حالتين ممكنتين، ولتقييم هذه يمكنك استخدام صياغة if-elif-else في Python. تقوم Python بتنفيذ كتلة واحدة فقط في سلسلة if-elif-else. تقوم بتشغيل كل اختبار شرطي بترتيب، حتى ينجح واحد منها. عندما ينجح اختبار، يتم تنفيذ الكود الذي يلي ذلك الاختبار وتخطي بقية الاختبارات.


تتضمن العديد من الحالات الواقعية أكثر من حالتين ممكنتين. على سبيل المثال، فكر في متنزه يفرض معدلات دخول مختلفة لفئات عمرية مختلفة:

- الدخول لأي شخص تحت عمر 4 سنوات مجاني.

- الدخول لأي شخص بين عمر 4 و 18 يكلف 25 دولار.

- الدخول لأي شخص عمره 18 أو أكبر يكلف 40 دولار.


كيف يمكننا استخدام if statement لتحديد معدل دخول الشخص؟ الكود التالي يختبر فئة العمر للشخص ثم يطبع رسالة بسعر الدخول:


يختبر if test ما إذا كان الشخص تحت عمر 4 سنوات. عندما ينجح الاختبار، يتم طباعة رسالة مناسبة وتتخطى Python بقية الاختبارات. خط elif هو في الحقيقة اختبار if آخر، والذي يعمل فقط إذا فشل الاختبار السابق. في هذه النقطة في السلسلة، نعرف أن الشخص على الأقل عمره 4 سنوات لأن الاختبار الأول فشل. إذا كان الشخص تحت عمر 18، يتم طباعة رسالة مناسبة وتخطي كتلة else. إذا فشل كلا الاختبارين if و elif، تقوم Python بتشغيل الكود في كتلة else.


في هذا المثال، يتم تقييم if test إلى False، لذا لا يتم تنفيذ كتلة الكود الخاصة به. ومع ذلك، يتم تقييم elif test إلى True (12 أقل من 18) لذلك يتم تنفيذ كودها. الناتج هو جملة واحدة، تخبر المستخدم بسعر الدخول:


أي عمر أكبر من 17 سيجعل كلا الاختبارين الأولين يفشلان. في هذه الحالات، يتم تنفيذ كتلة else ويكون سعر الدخول 40 دولار.


بدلاً من طباعة سعر الدخول داخل كتلة if-elif-else، سيكون أكثر اختصاراً تعيين السعر فقط داخل سلسلة if-elif-else ثم إجراء استدعاء print() واحد الذي يعمل بعد تقييم السلسلة:


تحدد السطور ذات المسافة البادئة قيمة السعر وفقاً لعمر الشخص، كما في المثال السابق. بعد تحديد السعر بواسطة سلسلة if-elif-else، يستخدم استدعاء print() غير المسافة البادئة هذا القيمة لعرض رسالة تبلغ الشخص بسعر الدخول.


ينتج هذا الكود نفس الناتج مثل المثال السابق، ولكن غرض سلسلة if-elif-else أضيق. بدلاً من تحديد السعر وعرض رسالة، فإنه يحدد فقط سعر الدخول. بالإضافة إلى كونه أكثر كفاءة، فإن هذا الكود المعدل أسهل في التعديل من النهج الأصلي. لتغيير نص رسالة المخرجات، تحتاج فقط إلى تغيير استدعاء print() واحد بدلاً من ثلاثة استدعاءات print() منفصلة.


استخدام كتلات elif متعددة


يمكنك استخدام عدد من كتل elif في الكود كما تريد. على سبيل المثال، إذا كان المتنزه سيطبق خصماً لكبار السن، يمكنك إضافة اختبار شرطي آخر للكود لتحديد ما إذا كان شخص ما يستحق الخصم لكبار السن. لنفترض أن أي شخص عمره 65 سنة أو أكبر يدفع نصف سعر الدخول العادي، أي 20 دولار:


لم يتغير معظم هذا الكود. تتحقق كتلة elif الثانية الآن للتأكد من أن الشخص عمره أقل من 65 سنة قبل تعيين سعر الدخول الكامل البالغ 40 دولار. لاحظ أن القيمة المعينة في كتلة else تحتاج إلى تغييرها إلى 20 دولار، لأن الأعمار الوحيدة التي تصل إلى هذه الكتلة هي للأشخاص الذين عمرهم 65 سنة أو أكبر.


حذف كتلة else


لا تتطلب Python كتلة else في نهاية سلسلة if-elif. في بعض الأحيان، تكون كتلة else مفيدة. في أوقات أخرى، يكون من الأوضح استخدام اختبار elif إضافي يلتقط الشرط المحدد المطلوب:


تعيّن كتلة elif النهائية سعر 20 دولار عندما يكون الشخص عمره 65 سنة أو أكثر، وهو أوضح قليلاً من كتلة else العامة. مع هذا التغيير، يجب أن يجتاز كل كتلة كود اختباراً محدداً ليتم تنفيذها.


كتلة else هي عبارة catchall. إنها تتطابق مع أي شرط لم يتطابق مع اختبار if أو elif محدد، ويمكن أن يشمل ذلك أحياناً بيانات غير صالحة أو حتى خبيثة. إذا كان لديك شرط نهائي محدد تريد اختباره، فكر في استخدام كتلة elif نهائية واحذف كتلة else. ونتيجة لذلك، ستكون أكثر ثقة بأن الكود الخاص بك سيعمل فقط في ظل الظروف الصحيحة.


اختبار عدة شروط


سلسلة if-elif-else قوية، ولكنها مناسبة فقط عندما تحتاج إلى اجتياز اختبار واحد فقط. بمجرد أن تجد Python اختباراً واحداً ينجح، تتخطى بقية الاختبارات. هذا السلوك مفيد، لأنه فعال ويسمح لك باختبار شرط محدد واحد.

ومع ذلك، أحياناً يكون من المهم فحص جميع الشروط ذات الاهتمام. في هذه الحالة، يجب عليك استخدام سلسلة من if statements البسيطة بدون كتل elif أو else. هذه التقنية منطقية عندما يمكن أن تكون أكثر من شرط واحد True، وتريد التصرف بناءً على كل شرط True.


دعنا نعيد النظر في مثال pizzeria. إذا طلب شخص ما بيتزا بطبقتين، ستحتاج إلى التأكد من تضمين كلا الطبقتين في البيتزا الخاصة بهم:


نبدأ بقائمة تحتوي على الطبقات المطلوبة. if statement الأولى تتحقق مما إذا كان الشخص قد طلب الفطر على البيتزا الخاصة به. إذا كان الأمر كذلك، يتم طباعة رسالة تأكيد لهذه الطبقة. اختبار pepperoni هو if statement بسيط آخر، وليس elif أو else statement، لذلك يتم تشغيل هذا الاختبار بغض النظر عما إذا كان الاختبار السابق قد نجح أم لا. if statement الأخيرة تتحقق مما إذا كانت الجبن الإضافية مطلوبة، بغض النظر عن نتائج الاختبارات السابقة. يتم تنفيذ هذه الاختبارات الثلاثة المستقلة في كل مرة يتم فيها تشغيل هذا البرنامج.


لأن كل شرط في هذا المثال يتم تقييمه، يتم إضافة الفطر والجبن الإضافي إلى البيتزا:



لن يعمل هذا الكود بشكل صحيح إذا استخدمنا سلسلة if-elif-else، لأن الكود سيتوقف عن التشغيل بعد نجاح اختبار واحد فقط. هذا ما سيبدو عليه:


نجح الاختبار للفطر، لذلك تتم إضافة الفطر إلى البيتزا. ومع ذلك، لا يتم التحقق من القيم 'extra cheese' و 'pepperoni' أبداً، لأن Python لا تشغل أي اختبارات بعد أول اختبار ينجح في سلسلة if-elif-else. سيتم إضافة الطبقة الأولى لطلب العميل، ولكن ستفقد جميع الطبقات الأخرى:



باختصار، إذا كنت تريد تشغيل كتلة واحدة فقط من الكود، استخدم سلسلة if-elif-else. إذا كانت هناك حاجة لتشغيل أكثر من كتلة واحدة من الكود، استخدم سلسلة من if statements المستقلة.


جربها بنفسك


تمرين 5-3. ألوان الفضائيين #1:

تخيل أن فضائيًا تم إسقاطه للتو في لعبة. قم بإنشاء متغير يسمى `alien_color` وامنحه قيمة 'green'، 'yellow'، أو 'red'.

اكتب جملة if لاختبار ما إذا كان لون الفضائي هو الأخضر. إذا كان كذلك، اطبع رسالة بأن اللاعب قد حصل على 5 نقاط.

اكتب نسخة من هذا البرنامج التي تمر في اختبار if ونسخة أخرى تفشل فيه (النسخة التي تفشل لن يكون لها أي مخرجات).


تمرين 5-4. ألوان الفضائيين #2:

اختر لونًا لفضائي كما فعلت في التمرين 5-3، واكتب سلسلة if-else.

إذا كان لون الفضائي أخضر، اطبع جملة بأن اللاعب حصل على 5 نقاط لإسقاط الفضائي.

إذا لم يكن لون الفضائي أخضر، اطبع جملة بأن اللاعب حصل على 10 نقاط.

اكتب نسخة من هذا البرنامج التي تنفذ كتلة if ونسخة أخرى تنفذ كتلة else.


تمرين 5-5. ألوان الفضائيين #3:

حوّل سلسلة if-else من التمرين 5-4 إلى سلسلة if-elif-else.

إذا كان الفضائي أخضر، اطبع رسالة بأن اللاعب حصل على 5 نقاط.

إذا كان الفضائي أصفر، اطبع رسالة بأن اللاعب حصل على 10 نقاط.

إذا كان الفضائي أحمر، اطبع رسالة بأن اللاعب حصل على 15 نقطة.

اكتب ثلاث نسخ من هذا البرنامج، مع التأكد من طباعة كل رسالة للون الفضائي المناسب.


تمرين 5-6. مراحل الحياة:

اكتب سلسلة if-elif-else التي تحدد مرحلة حياة الشخص. حدد قيمة للمتغير `age`، ثم:

إذا كان الشخص أقل من سنتين، اطبع رسالة بأن الشخص طفل رضيع.

إذا كان الشخص على الأقل سنتين ولكن أقل من 4 سنوات، اطبع رسالة بأن الشخص طفل صغير.

إذا كان الشخص على الأقل 4 سنوات ولكن أقل من 13 سنة، اطبع رسالة بأن الشخص طفل.

إذا كان الشخص على الأقل 13 سنة ولكن أقل من 20 سنة، اطبع رسالة بأن الشخص مراهق.

إذا كان الشخص على الأقل 20 سنة ولكن أقل من 65 سنة، اطبع رسالة بأن الشخص بالغ.

إذا كان الشخص عمره 65 سنة أو أكثر، اطبع رسالة بأن الشخص كبير في السن.


تمرين 5-7. الفاكهة المفضلة:

أنشئ قائمة بفواكهك المفضلة، ثم اكتب سلسلة من جمل if المستقلة التي تتحقق من وجود فواكه معينة في قائمتك.

أنشئ قائمة بثلاث من فواكهك المفضلة وسمها `favorite_fruits`.

اكتب خمس جمل if. كل منها يجب أن تتحقق مما إذا كانت فاكهة معينة في قائمتك. إذا كانت الفاكهة في قائمتك، يجب أن تطبع كتلة if جملة، مثل: "أنت حقًا تحب الموز!"


 


النهاية


نكون هنا انتهينا من الجزء 1 من الفصل 5 من منهج تعلم Python من كتاب python crash course بالعربية 


واذا واجهتك اي مشكلة في الفهم او ما شابه , يمكنك على الفور الذهاب الى المجتمع الخاص بنا في Telegram للمناقشة والتواصل معنا من هنا  


او اذا واجهتك مشكلة في الموقع او تريد اجابة سريعة يمكنك الذهاب الى اخر صفحة في الموقع ستجد صفحة اتصل بنا موجودة يمكنك ارسالة لنا مشكلتك , وسيتم الرد عليها بسرعة جدا ان شاء الله 


ويمكنك الأنضمام الى المجتمع Hidden Lock بالكامل مع جميع قنواته للأستفادة في اخر الأخبار في عالم التقنية وايضا الكتب بالمجان والكورسات والمقالات من خلال الرابط التالي لمجموعة القنوات من     هنا 


يمكنك ايضا متابعتنا في منصات X او Twitter سابقا , لمشاهدة الاخبار والمقالات السريعة والمهمة من  

هنا


وفقط كان معكم sparrow مقدم هذه الشهادة من فريق Hidden Lock 

Tags

إرسال تعليق

0تعليقات

إرسال تعليق (0)

#buttons=(موافق!) #days=(20)

يستخدم موقعنا ملفات تعريف الارتباط لتحسين تجربتك. تاكد الان
Ok, Go it!