Python البيانات الشرطية: IF…Else، ELIF & Switch Case

⚡ ملخص ذكي

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

  • المبدأ الأساسي: لا يتم تنفيذ كتلة الشرط المُزاحة إلا عندما يكون الشرط صحيحًا، مما يشكل أساس عملية اتخاذ القرار في Python.
  • التعامل مع البدائل: أضف else لمسار احتياطي و elif لاختبار شروط إضافية بالتسلسل دون تداخل عميق.
  • تجنب الأخطاء المنطقية: استخدم سلسلة واحدة من عبارات if-elif-else بدلاً من عبارات if المستقلة عندما يجب أن تنطبق نتيجة واحدة فقط.
  • اكتب بإيجاز Code: قم بتطبيق التعبير الثلاثي value_if_true if condition else value_if_false لتعيين قيمة في سطر واحد قابل للقراءة.
  • التفرع الحديث: استبدل سلاسل elif الطويلة بخريطة القاموسping أو عبارة مطابقة الحالة التي تم تقديمها في Python 3.10 لاختيار متعدد الاتجاهات أكثر وضوحًا.

Python عبارات شرطية

ما هي العبارات الشرطية في Python?

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

ما هي تفاصيل Python إذا بيان؟

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

Python إذا بناء جملة البيان:

if expression:
    statement
else:
    statement

Python إذا…مخطط انسيابي آخر

Python مخطط انسيابي يوضح الفروع الصحيحة والخاطئة لـ if…else

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

Python مثال على مخرجات عبارة if في المحرر

# Example file for working with conditional statements
def main():
    x, y = 2, 8
    if(x < y):
        st = "x is less than y"
    print(st)

if __name__ == "__main__":
    main()
  • Code خط 3: نُعرّف متغيرين x و y = 2 و 8.
  • Code خط 4: تتحقق عبارة if من الشرط x < y، وهو صواب في هذه الحالة.
  • Code خط 5: تم تعيين المتغير st إلى "x أقل من y".
  • Code خط 6: يقوم السطر print(st) بإخراج قيمة st، وهي "x أقل من y".

ماذا يحدث عندما لا يتحقق شرط "إذا"؟

بالاستناد إلى المثال السابق، دعونا نرى ما يحدث عندما يكون شرط if في Python لا يتحقق الشرط. عندما يكون الشرط خاطئًا ولا يوجد فرع else، يتم تخطي الكود المُزاح بالكامل.

Python يحدث خطأ عند عدم استيفاء شرط if

# Example file for working with conditional statements
def main():
    x, y = 8, 4
    if(x < y):
        st = "x is less than y"
    print(st)

if __name__ == "__main__":
    main()
  • Code خط 3: نُعرّف متغيرين x و y = 8 و 4.
  • Code خط 4: تتحقق عبارة if من الشرط x < y، وهو خطأ في هذه الحالة.
  • Code خط 5: المتغير st هو لا تم ضبطه على "x أقل من y."
  • Code خط 6: يحاول السطر print(st) طباعة متغير لم يتم تعريفه مطلقًا، لذا Python يثير أ الاسم خطأ.
⚠تحذير: يُعدّ استخدام متغير مُسند إليه قيمة داخل كتلة شرطية (if) خطأً شائعاً بين المبتدئين. لذا، يُنصح إما بإنشاء فرع شرطي (else) أو إعطاء المتغير قيمة افتراضية قبل جملة الشرط (if).

كيفية استخدام شرط "else"

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

على سبيل المثال:

Python مثال على شرط if-else

# Example file for working with conditional statements
def main():
    x, y = 8, 4
    if(x < y):
        st = "x is less than y"
    else:
        st = "x is greater than y"
    print(st)

if __name__ == "__main__":
    main()
  • Code خط 3: نُعرّف متغيرين x و y = 8 و 4.
  • Code خط 4: تتحقق عبارة if من الشرط x < y، وهو خطأ في هذه الحالة.
  • Code خط 6: ينتقل مسار التحكم في البرنامج إلى شرط else.
  • Code خط 7: تم تعيين المتغير st إلى "x هو أكبر من ذ."
  • Code خط 8: يقوم السطر print(st) بإخراج قيمة st، وهي "x أكبر من y".

عندما لا يعمل شرط "else"

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

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

Python شرط else ينتج عنه نتيجة خاطئة

# Example file for working with conditional statements
def main():
    x, y = 8, 8
    if(x < y):
        st = "x is less than y"
    else:
        st = "x is greater than y"
    print(st)

if __name__ == "__main__":
    main()

كيفية استخدام شرط "elif"

لتصحيح الخطأ السابق الناتج عن شرط else، يمكننا استخدام أليف باستخدام عبارة elif، تُخبر البرنامج باختبار احتمال ثالث عندما يكون الشرط الأول خاطئًا. يمكنك ربط عدة عبارات elif للتحقق من الاحتمالات الرابعة والخامسة وما بعدها في التعليمات البرمجية.

على سبيل المثال:

Python مثال على شرط elif

# Example file for working with conditional statements
def main():
    x, y = 8, 8
    if(x < y):
        st = "x is less than y"
    elif(x == y):
        st = "x is same as y"
    else:
        st = "x is greater than y"
    print(st)

if __name__ == "__main__":
    main()
  • Code خط 3: نُعرّف متغيرين x و y = 8 و 8.
  • Code خط 4: تتحقق عبارة if من الشرط x < y، وهو خطأ في هذه الحالة.
  • Code خط 6: ينتقل مسار التحكم في البرنامج إلى شرط elif. يتحقق هذا الشرط مما إذا كان x يساوي y، وهو ما يكون صحيحًا.
  • Code خط 7: تم تعيين المتغير st إلى "x هو نفس ذ. "
  • Code خط 10: يخرج التحكم في البرنامج من عبارة if (ولن يصل إلى عبارة else) ويطبع st. الناتج هو "x هو نفسه y"، وهو صحيح.

كيفية تنفيذ عبارة شرطية بأقل قدر من التعليمات البرمجية Code

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

بناء الجملة:

value_if_true if condition else value_if_false

على سبيل المثال:

Python مثال على عبارة شرطية ثلاثية من سطر واحد

def main():
    x, y = 10, 8
    st = "x is less than y" if (x < y) else "x is greater than or equal to y"
    print(st)

if __name__ == "__main__":
    main()
  • Code خط 2: نُعرّف متغيرين x و y = 10 و 8.
  • Code خط 3: يتم تعيين المتغير st إلى "x أقل من y" إذا كان x < y؛ وإلا فإنه يصبح "x أكبر من أو يساوي y". ولأن x > y هنا، فإن st تصبح القيمة الثانية.
  • Code خط 4: يطبع قيمة st ويعطي الناتج الصحيح.

Python متداخلة إذا بيان

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

total = 100
# country = "US"
country = "AU"

if country == "US":
    if total <= 50:
        print("Shipping Cost is $50")
    elif total <= 100:
        print("Shipping Cost is $25")
    elif total <= 150:
        print("Shipping Cost is $5")
    else:
        print("FREE")

if country == "AU":
    if total <= 50:
        print("Shipping Cost is $100")
    else:
        print("FREE")

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

تبديل بيان الحالة في Python

ما هي عبارة التبديل (Switch statement)؟

عبارة switch هي عبارة تفرع متعددة الاتجاهات تقارن قيمة متغير بالقيم المحددة في عبارات case. لسنوات عديدة، Python لم تكن اللغة تحتوي على عبارة switch، لذلك قام المطورون بتنفيذ نفس السلوك باستخدام Python قاموس رسم خريطةping.

مثال باستخدام خريطة القاموسping:

def switch_example(argument):
    switcher = {
        0: "This is Case Zero",
        1: "This is Case One",
        2: "This is Case Two",
    }
    return switcher.get(argument, "nothing")

if __name__ == "__main__":
    argument = 1
    print(switch_example(argument))

switch Case With match (Python و3.10 Later)

منذ Python 3.10 (صدر في أكتوبر 2021)، Python يوفر أصليًا حالة المباراة تُعرف هذه العبارة باسم مطابقة الأنماط الهيكلية. وهي توفر بديلاً واضحاً وسهل القراءة لسلاسل elif الطويلة وأسلوب القاموس الموضح أعلاه.

def switch_example(argument):
    match argument:
        case 0:
            return "This is Case Zero"
        case 1:
            return "This is Case One"
        case 2:
            return "This is Case Two"
        case _:
            return "nothing"

if __name__ == "__main__":
    print(switch_example(1))

يعمل الرمز السفلي (_) كحالة افتراضية، حيث يطابق أي قيمة لم يتم التعامل معها بواسطة الحالات السابقة، تمامًا مثل القيمة الافتراضية في عبارة switch التقليدية.

✅ نصيحة: استخدم مطابقة الأحرف الكبيرة والصغيرة إذا كنت تستخدم Python 3.10 أو أحدث. بالنسبة للإصدارات الأقدم، خريطة القاموسping لا تزال هذه هي الطريقة القياسية لمحاكاة عبارة التبديل.

مقارنة سريعة بين if و elif و else

استخدم هذه المقارنة لتحديد أي بنية شرطية تناسب منطق اتخاذ القرار الخاص بك.

ملخص الحسابالهدفمتى يجب استخدام
ifيُنفذ كتلة برمجية عندما يكون الشرط صحيحًاقرار واحد بنعم أو لا
إذا...وإلايوفر حلاً بديلاً عندما يكون الشرط خاطئًانتيجتان متنافيتان
أليفيختبر شروطًا إضافية بالتسلسلثلاثة احتمالات أو أكثر
متداخلة إذايضع شرطًا داخل شرط آخرقرار يعتمد على شرط ثانٍ
ثلاثييختصر عبارة if-else في سطر واحدتعيين قيمة بسيط
حالة المباراةيطابق قيمة مع العديد من الأنماطالتفرع متعدد الاتجاهات (Python 3.10 +)
⚠ ملاحظة: Python وصل اثنان إلى نهاية عمرهما الافتراضي في 1 يناير 2020، وتستخدم جميع الأمثلة الواردة في هذه المقالة Python 3. بناء الجملة. في Python 2- كانت دالة الطباعة عبارة (على سبيل المثال، print st) وليست دالة، لذا لن يعمل الكود أعلاه دون تغيير. Python 2.

الأسئلة الشائعة

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

نعم. حيث Python في الإصدار 3.10، توفر عبارة match-case تفرعًا أصليًا على غرار عبارة switch من خلال مطابقة الأنماط الهيكلية. في الإصدارات الأقدم، يحاكي المطورون عبارة switch باستخدام خريطة القاموس.ping باستخدام دالة get() لتوفير قيمة افتراضية.

استخدم تعبيرًا ثلاثيًا: القيمة إذا كان الشرط صحيحًا، وإلا القيمة إذا كان خاطئًا. على سبيل المثال، st = "منخفض" إذا كان x < 10 وإلا "مرتفع" يُعيّن قيمة في سطر واحد قابل للقراءة دون الحاجة إلى كتلة if-else كاملة.

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

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

تلخيص هذه التدوينة بـ: