Python: الجمل الشرطية

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


1. جملة if: شرط بسيط

صيغة if واضحة ومباشرة:

TEXTN
if condition:
    code to execute when condition is True

لاحظ النقطتين : و المسافة البادئة (عادة 4 مسافات) — المسافة البادئة تخبر بايثون أي كود ينتمي إلى if.

PYTHON
age = 18
if age >= 18:
    print("You are an adult!")
    print("This is also inside the if block.")

print("This is outside the if and always executes.")

المخرجات:

TEXT 📖 للعرض فقط
You are an adult!
This is also inside the if block.
This is outside the if and always executes.
💡 نصيحة: تستخدم بايثون المسافة البادئة لتحديد كتل الكود (اللغات الأخرى تستخدم {}). الكود داخل نفس كتلة if يجب أن يكون له نفس المسافة البادئة. إذا كنت معتاداً على C أو Java، قد تحتاج بعض الوقت لتعتاد، لكن بايثون تُجبرك على كتابة كود نظيف.

▶ مثال: فحص نجاح/رسوب (الصعوبة ⭐)

PYTHON
score = 75

if score >= 60:
    print("Congratulations, you passed!")
    print(f"Your score is {score}.")

print("Score recorded.")
▶ جرّب الكود

المخرجات:

TEXT 📖 للعرض فقط
Congratulations, you passed!
Your score is 75.
Score recorded.


2. if-else: اختر بين اثنين

عندما يكون الشرط صحيحاً، افعل شيئاً؛ عندما يكون خاطئاً، افعل شيئاً آخر:

TEXTN
if condition:
    execute when True
else:
    execute when False
PYTHON
score = 45

if score >= 60:
    print("Passed!")
else:
    print("Failed, need to retake.")

المخرجات:

TEXT 📖 للعرض فقط
Failed, need to retake.

(1) المسافة البادئة لـ if و else

PYTHON
password = "123456"

if password == "123456":
    print("Password correct, welcome back!")
else:
    print("Wrong password, try again.")
    print("If you forgot your password, click 'Forgot Password'.")
⚠️ ملاحظة: else تحتاج أيضاً إلى نقطتين :، ويجب أن تكون else محاذية لـ if المقابل (نفس مستوى المسافة البادئة).



3. if-elif-else: اختر من خيارات متعددة

السيناريوهات الواقعية غالباً ما يكون لها أكثر من احتمالين. استخدم elif (اختصار لـ else if) للتعامل مع فروع متعددة:

TEXTN
if condition1:
    execute when condition1 is True
elif condition2:
    execute when condition2 is True
elif condition3:
    execute when condition3 is True
else:
    execute when none of the above are True

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

PYTHON
score = 85

if score >= 90:
    print("Excellent!")
elif score >= 80:
    print("Good!")
elif score >= 70:
    print("Average.")
elif score >= 60:
    print("Pass.")
else:
    print("Failed, need to retake.")

# يُخرج: Good!
💡 نصيحة: انتبه لترتيب الشروط. إذا وضعت if score >= 60: أولاً، درجة 85 ستدخل فرع "Pass" ولن تصل أبداً إلى "Good" أو "Excellent." ضع الشروط الأكثر صرامة أولاً.

▶ مثال: نظام طلب المطعم (الصعوبة ⭐⭐)

PYTHON
print("=== Today's Meals ===")
print("1. Braised Beef Noodles  $10")
print("2. Shredded Pork Rice     $8")
print("3. Tomato Egg Rice        $6")
print("4. Egg Fried Rice         $4")

choice = 3

if choice == 1:
    print("You ordered Braised Beef Noodles, $10.")
elif choice == 2:
    print("You ordered Shredded Pork Rice, $8.")
elif choice == 3:
    print("You ordered Tomato Egg Rice, $6.")
elif choice == 4:
    print("You ordered Egg Fried Rice, $4.")
else:
    print("Sorry, invalid option.")

print("Enjoy your meal!")
▶ جرّب الكود

المخرجات:

TEXT 📖 للعرض فقط
=== Today's Meals ===
1. Braised Beef Noodles  $10
2. Shredded Pork Rice     $8
3. Tomato Egg Rice        $6
4. Egg Fried Rice         $4
You ordered Tomato Egg Rice, $6.
Enjoy your meal!


4. الشروط المتداخلة

يمكن أن تحتوي الشروط على شروط أخرى. هذا يُسمى التداخل.

PYTHON
age = 20
has_ticket = True

if age >= 18:
    print("Adult, can enter.")
    if has_ticket:
        print("Has ticket, please proceed.")
    else:
        print("Please buy a ticket first.")
else:
    print("Minor, entry denied.")

المخرجات:

TEXT 📖 للعرض فقط
Adult, can enter.
Has ticket, please proceed.

(1) لا تفرط في التداخل

التداخل بحد ذاته ليس خطأ، لكن أكثر من 3 مستويات يجعل الكود صعب القراءة:

TEXT 📖 للعرض فقط
# ❌ غير موصى به: تداخل كثير
user_input = "y"
is_admin = True
has_permission = True

if user_input == "y":
    if is_admin:
        if has_permission:
            print("Operation successful!")
        else:
            print("No permission.")
    else:
        print("Not an admin.")
else:
    print("Operation canceled.")

قم بتسويته باستخدام العوامل المنطقية:

PYTHON
# ✅ موصى به: استخدم and لتقليل التداخل
user_input = "y"
is_admin = True
has_permission = True

if user_input != "y":
    print("Operation canceled.")
elif is_admin and has_permission:
    print("Operation successful!")
else:
    print("Insufficient permissions.")
💡 نصيحة: قاعدة عملية: إذا تجاوز التداخل 3 مستويات، فكر في دمج الشروط باستخدام and/or، أو استخراج المنطق العميق في دالة. الكود الجيد "مسطح"، وليس "عميقاً."

▶ مثال: حاسبة تكلفة الشحن (الصعوبة ⭐⭐)

PYTHON
# حساب الشحن بناءً على المنطقة والوزن ومستوى العضوية
region = "domestic"     # "domestic" أو "international"
weight = 3.5            # kg
is_vip = False

if region == "domestic":
    if weight <= 1:
        shipping = 10
    elif weight <= 5:
        shipping = 15
    else:
        shipping = 20
else:
    if weight <= 1:
        shipping = 50
    elif weight <= 5:
        shipping = 80
    else:
        shipping = 120

# VIP يحصل على خصم 20%
if is_vip:
    shipping *= 0.8

print(f"Region: {region}")
print(f"Weight: {weight}kg")
print(f"Shipping: ${shipping:.0f}")
▶ جرّب الكود

المخرجات:

TEXT 📖 للعرض فقط
Region: domestic
Weight: 3.5kg
Shipping: $15


5. التعبير الثلاثي (التعبير الشرطي)

لدى بايثون صيغة if-else في سطر واحد تسمى التعبير الثلاثي:

PYTHON
# الطريقة العادية
age = 20
if age >= 18:
    status = "adult"
else:
    status = "minor"

# التعبير الثلاثي (سطر واحد)
status = "adult" if age >= 18 else "minor"

print(status)   # adult

البنية:

TEXT 📖 للعرض فقط
value1 if condition else value2

إذا كان الشرط صحيحاً، خذ value1؛ وإلا، خذ value2.

(1) الاستخدام العملي

TEXT 📖 للعرض فقط
# أخرج نتيجة بناءً على الدرجة
score = 88
result = "passed" if score >= 60 else "failed"
print(f"Exam result: {result}")   # Exam result: passed

# البحث عن القيمة الافتراضية
name = input("Enter your name: ") or "Guest"
greeting = f"Hello, {name}" if name else "Hello, Guest"
print(greeting)
⚠️ ملاحظة: التعبيرات الثلاثية موجزة، لكن لا تفرط في استخدامها. إذا كان المنطق معقداً (يحتاج elif) أو الفروع طويلة، التزم بـ if-elif-else العادي. الإيجاز ≠ قابلية القراءة.



6. pass: لا تفعل شيئاً

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

TEXTN
if age >= 18:
    pass    # TODO: أضف منطق البالغين لاحقاً
else:
    print("Minor, cannot register.")

pass تعني "لا تفعل شيئاً هنا، استمر." تُستخدم غالباً لـ:

TEXTN
# استخدام في العالم الحقيقي
if user_age >= 18:
    register_user()      # تابع مع التسجيل
else:
    pass                 # لا معالجة خاصة للقصر حتى الآن
💡 نصيحة: إذا كنت تستخدم VS Code، اكتب تعليق # TODO مع pass. سيجمع VS Code جميع عناصر TODO للرجوع إليها لاحقاً.



7. حالات الاستخدام الشائعة



❓ أسئلة شائعة

س ما الفرق بين elif و if؟ لماذا لا نستخدم كلها if؟
ج الفرق الرئيسي: elif يُفحص فقط إذا لم تتحقق الشروط السابقة، بينما جمل if المستقلة تُفحص بغض النظر. مع ثلاث جمل if مستقلة لدرجة 85، "Excellent" و "Good" و "Average" كلها ستُنفّذ. مع if-elif-elif، فقط فرع "Good" الأول المتطابق سيشتغل. استخدم elif لـ "اختر واحداً"، استخدم جمل if متعددة لـ "افحص كل منها بشكل مستقل."

📖 ملخص


📝 تمارين

  1. أساسي (الصعوبة ⭐): اكتب برنامجاً للتحقق مما إذا كان الرقم فردياً أم زوجياً. أدخل عدداً صحيحاً؛ أخرج "فردي" أو "زوجي." تلميح: n % 2 == 0 تعني زوجي.

  2. متوسط (الصعوبة ⭐⭐): اكتب برنامج تقييم صحة BMI. أدخل الوزن (كجم) والطول (م)، احسب BMI، ثم أخرج:

    • BMI < 18.5 ← "نحيف"
    • 18.5 ≤ BMI < 24 ← "طبيعي"
    • 24 ≤ BMI < 28 ← "وزن زائد"
    • BMI ≥ 28 ← "سمنة"
  3. تحدي (الصعوبة ⭐⭐⭐): اكتب آلة حاسبة بسيطة. يستقبل البرنامج ثلاث مدخلات: الرقم الأول، العامل (+ - * /)، الرقم الثاني. نفذ العملية وأخرج النتيجة. تعامل مع:

    • القسمة على صفر: أخرج "لا يمكن القسمة على صفر"
    • عامل غير صالح: أخرج "عامل غير صالح"
    • الحالة العادية: أخرج نتيجة العملية الحسابية
Web-Tutorial.com

فريق Web-Tutorial التقني

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

100%