Path: blob/master/الفصل الرابع-اتخاذ القرارات.ipynb
675 views
Kernel: Python 3 (ipykernel)
In [1]:
Out[1]:
ان من الاشياء الجميلة في لغة البرمجة ان المبرمج يستطيع ان يعطي الكمبيوتر قدرة على التفكير "ان صح التعبير" والتي من خلالها يستطيع الكمبيوتراتخاذ قراراته. لكن في حقيقة الامر هذه القرارات ماهي الا شروط يفرضها المبرمج على البرنامج ليحقق مبتغاه. في هذا الفصل سوف نتحدث عن كيفية اتخاذ القرارات في بايثون باستخدام اداة الشرط if.
أهداف الفصل
عند اتمام هذا الفصل يجب ان يكون لديك المام بالآتي:- التعرف على كيفية استخدام أداة الشرط if
- التعرف على كيفية استخدام else و elif مع أداة الشرط if.
- التعرف على طريقة كتابة أداة شرط داخل أداة شرط أخرى.
التركيب اللغوي
التركيب اللغوي في بايثون هنا مشابه لغيره من لغات البرمجة. فهو يهدف في المقام الاول الى التحكم في سير تنيفذ البرنامج بوضع شروط يفرضها المبرمج حين كتابته للكود البرمجي على البرنامج بحيث تكون نتائح هذه الشروط احدى قيمتين صح او خطأ. في حال الحصول على القيمة صح من عملية التحقق من الشرط يقوم مفسر بايثون بتنفيذ اوامر يحددها له المبرمج اما في حال الحصول على القيمة خطأ فان بايثون يتخطأ الاوامر التي يتطلب تنفيذها تحقق الشرط كما هو موضح في الشكل ادناه.
يبتدتئ التركيب اللغوي لأتخاذ القرارات بكلمة if متبوعا بالشرط المراد التأكد منه ومن ثم وضع نقطتين فوق بعض في نهاية السطر كما في المثال التالي:
In [2]:
Out[2]:
Ahmad
ففي المثال السابق يتم التحقق من صحة كون عدد الاحرف الموجودة في كلمة “Ahmad” اصغر من العدد 10 . فاذا كانت العبارة صحيحة فان مفسر بايثون يقوم بتنفيذ العبارة التي تتلو النقطتين فقوق بعض. اما إذا كانت العبارة خاطئة فان مفسر بايثون يتجاهل تنفيذ العبارة التي تتلو النقطتين فوق بعض. وبما ان هذه العبارة صحيحة فانه يتم تنفيذ الكود (print(name الذي يتلو النقطتين فوق بعض.
ان كتابة العبارة المراد تنفيذها بعد تحقق الشرط يفضل ان تكون في سطر مستقل بدلا من ان تكون في نفس السطر ولكن إذا جعلت في سطر مستقل فانه يتوجب ترك مسافة بمقدار حرف واحد على الأقل في بداية السطر الجديد (بفضل ترك مسافة بمقدار أربعة أحرف كما هو متعارف عليه بين مبرمجي بايثون) لكي يتمكن مفسر بايثون من التفرقة بين العبارة المشروطة والعبارة الاعتيادية التي قد تقع بعدها كما في المثال التالي:
In [3]:
Out[3]:
Ahmad
5
لاحظ في المثال السابقة ان ترك مسافة في العبارة المشروطة كان ضروري لتمكين مفسر بايثون من التفرقة بين العبارة الشرطية وما يليها من عبارات أخرى غير مرتبطة بالجملة الشرطية. لذلك كل العبارات التي يتطلب تنفيذها تحقق الشرط يجب ان تترك مسافة في بداية السطر وتكون هذه المسافة هي نفسها لجميع العبارات التي تتطلب تحقق الشرط. المثال التالي يوضح تنفيذ أكثر من عبارة تتطلب تحقق شرط معين:
In [4]:
Out[4]:
Ahmad
5
7
تمارين استكشافية
١-قم بكتابة المثال السابق واجعل واحدة من العبارات المشروطة تبتدأ بعدد مختلف من الفراغات عن العبارتين الأخريين ماذا تلاحظ؟
In [ ]:
٢- قم بكتابة جملة شرطية للتعرف على ما اذا كان العدد 6 موجود في القائمة [1,2,3,4] بحيث يقوم بطباعة هذا الرقم اذا كان الرقم موجود فعلا؟ ماذا تلاحظ؟
In [ ]:
لنرفض اننا نريد ان نقوم بعمل ما إذا تحقق شرط معين ونقوم بعمل اخر إذا لم يتحقق الشرط. للقيام بهذه المهمة نحتاج الى استخدام else في الجملة الشرطية لتخبر بايثون بالمراد فعله في حين عدم تحقق الشرط المطلوب كما هو موضح في المثال التالي:
In [5]:
Out[5]:
the name is greater than 4 letters
لاحظ ان else تخضع لجميع شروط الجملة الشرطية السابقة من حيث انها تنتهي بنقطتين ويتوجب ترك مسافة في بداية العبارات التي يتطلب تنفيذها عدم تحقق الشرط.
تمارين استكشافية
قم بكتابة جملة شرطية للتعرف على ما اذا كان العدد 6 موجود في القائمة [1,2,3,4] بحيث يقوم بطباعة هذا الرقم اذا كان الرقم موجود فعلا؟ واذا لم يكن موجودا اطبع عبارة تفيد ان الرقم غير موجود؟
In [ ]:
لنفرض اننا نريد ان نتحقق من توفر شرطين قبل ان نقوم بعمل ما ونقوم بعمل آخر في حال عدم توفر الشرطين. ماذا بإمكاننا ان نصنع في هذه الحالة؟ هناك حلول كثيرة فمنها مثلا ان نستخدم الجملة الشرطية if…else للتحقق من الشرط الاول والثاني باستخدام أداة الربط المنطقي and وفي حال عدم تحقق الشرطين يتم تنفيذ العبارة التي تلي else كما في المثال التالي:
In [6]:
Out[6]:
Ahmad
كما يمكن القيام بنفس المهمة باستخدام الجملة الشرطية البسيطة if للتحقق من الشرط الاول ومن ثم التحقق من الشرطة الثاني باستخدام الجملة الشرطية if … else كما في المثال التالي:
In [7]:
Out[7]:
Ahmad
في المثال الاخير هذا النوع من الاستخدام للأدوات الشرطية يسمى الأدوات الشرطية الفرعية. بحيث يتم استخدام أداة شرطية داخل أداة شرطية أخرى.
ويمكن استخدام التركيب elif للتحقق من شرط اخر في حال عدم تحقق شرط سابق كما في المثال التالي:
In [8]:
Out[8]:
Ahmad
يجب الاشارة الى ان بايثون يعتبر القيمة صفر او القيمة النصية الفارغة او قيمة None كقيمة خاطئة في حال استخدامها مع if كما في المثال التالي:
In [9]:
Out[9]:
No money in your balance
In [10]:
Out[10]:
please enter valid name
In [11]:
Out[11]:
the value is None
كما ان بايثون يعتبر اي قيمة عددية غير الصفر او اي بيان نصي يحتوي على حرف او اكثر قيمة صحيحة عند التعامل بها مع اداة الشرط كما في الامثلة التالية:
In [12]:
Out[12]:
253
In [13]:
Out[13]:
Ayman
In [14]:
Out[14]:
(1, 2, 3, 4)
In [ ]: