التفريع الشرطي: if و else
يمكن لجملة if أن تحتوي اختياريًا على جزء else. شغّل هذا المثال:
condition = True
if condition:
print('Yes')
else:
print('No')
غيّر الآن السطر الأول إلى condition = False وشغّل البرنامج مرة أخرى.
فكّر في else بمعنى «وإلا» أو «في غير ذلك». فإذا كان الشرط داخل if يساوي False، يُنفذ جسم else بدلًا منه. سواء كان الشرط صحيحًا أو خاطئًا، سيُنفذ واحد فقط من الجسمين.
إليك مثالًا أكثر فائدة؛ شغّله:
sentence = 'Hello World'
excited = True
if excited:
sentence = sentence.upper()
else:
sentence = sentence.lower()
print(sentence)
التعبير sentence.upper() نوع جديد من التعبيرات لم نتعامل معه من قبل. ما يحدث هنا أن sentence نص، والنصوص لها أساليب(Methods) مختلفة تساعدك على حساب قيم جديدة بسهولة، ومنها upper وlower. يشير الاسمان إلى الأحرف الكبيرة (Uppercase) والصغيرة (Lowercase).
مثلًا، التعبير 'Hello World'.upper() تكون قيمته 'HELLO WORLD'. لكنه لا يغيّر محتوى sentence نفسه، ولذلك إذا أردت الاحتفاظ بالقيمة الجديدة فعليك إسنادها من جديد، مثل sentence = sentence.upper().
غيّر الآن excited إلى False وشغّل البرنامج مرة أخرى.
إليك برنامجًا فيه خطأ منطقي:
sentence = 'Hello World'
excited = True
if excited:
char = '!'
sentence += char
print(sentence)
هل ترى المشكلة؟ إذا شغّلته الآن فسيبدو أن كل شيء يعمل. فما الذي يمكن أن يسوء؟
حاول اكتشافه قبل قراءة الإجابة. ماذا يحدث إذا غيّرت excited إلى False؟
إذا كانت excited تساوي True فإن char تُعرّف ويعمل كل شيء بصورة صحيحة. أما إذا كانت False فلن تُسنَد أي قيمة إلى char، ولذلك ستفشل محاولة استخدامها في sentence += char.
أصلح ذلك بإضافة جزء else إلى جملة if، بحيث إذا كانت excited تساوي False تُضاف نقطة (.) إلى نهاية الجملة بدل علامة التعجب (!).
لا تغيّر شيئًا موجودًا؛ أضف فقط قليلًا من الكود.
يجب أن تأتي
elseمباشرة بعد جسمifبلا أي شيء بينهما.يجب تنفيذ
sentence += charسواء كانتexcitedتساويTrueأوFalse.يمكنك وضع نسخة من
sentence += charداخل فرعيifوelse، لكن توجد طريقة أفضل.استخدم
elseلإسناد قيمة مختلفة إلىchar.إذا كانت
excitedتساويFalse، فيجب أن تكونcharهي'.'بدل'!'.
حان وقت تحدٍّ!
اكتب برنامجًا يستقبل نصًا في المتغير sentence ويطبع نسخة معدلة منه تحتوي على الحروف نفسها، بحيث يكون الحرف الأول كبيرًا (Capitalized) وتكون بقية الحروف صغيرة.
مثلًا، يجب أن تكون النتيجة Hello world سواء كانت قيمة sentence هي 'hello world' أو 'HELLO WORLD'.
تعلمت كل الأدوات اللازمة. ارجع إلى البرامج السابقة واستعن بها.
ستحتاج إلى حلقة تبني الجملة الجديدة محرفًا بعد محرف.
ستحتاج إلى
if/elseلاختيار إضافة محرف كبير أو صغير.يجب أن ينفذ
if/elseفرعًا مختلفًا بحسب دورة الحلقة الحالية.وهذا يعني أن شرط
ifيحتاج إلى متغير تتغير قيمته داخل الحلقة.في الدورة الأولى تحتاج إلى حرف كبير، وفي الدورات التالية إلى حروف صغيرة.
ممتاز!
تمرين أخير، وبعده يمكنك الاسترخاء.
اكتب برنامجًا يطبع sentence بأسلوب ساخر، مثل:
OnE MoRe eXeRcIsE, aNd tHeN YoU CaN ReLaX.
يجب أن يكون كل محرف ثانٍ بحروف صغيرة، بينما تكون بقية المحارف بحروف كبيرة.
هذا يشبه التمرين السابق. الفرق هو متى وأين تضبط متغير الشرط.
ستحتاج إلى متغير منطقي تتغير قيمته في كل دورة.
اكتب أولًا برنامجًا صغيرًا يقلب قيمة متغير منطقي: إذا كان
TrueيصبحFalse، والعكس. بدون حلقات، فقطif/else.استخدم المتغير في شرط
if، وأسند قيمة جديدة إلى المتغير نفسه داخل الجسم.ادمج
if/elseالذي يقلب القيمة معif/elseالذي يختار بين الحرف الكبير والصغير.
ممتاز! خذ لحظة لتلاحظ مقدار ما أصبحت قادرًا على كتابته وفهمه بنفسك.