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

آخر تحديث: 2026-09-22

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


كلمات مفتاحية / عبارات ذات صلة:return elif else pass if

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، قد تحتاج بعض الوقت لتعتاد، لكن بايثون تُجبرك على كتابة كود نظيف.

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

▶ جرّب الكود

المخرجات:

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." ضع الشروط الأكثر صرامة أولاً.

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

▶ جرّب الكود

المخرجات:

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، أو استخراج المنطق العميق في دالة. الكود الجيد "مسطح"، وليس "عميقاً."

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

▶ جرّب الكود

المخرجات:

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. حالات الاستخدام الشائعة



كلمات مفتاحية / عبارات ذات صلة:return elif else pass if

❓ أسئلة شائعة

س ما الفرق بين elif و if؟ لماذا لا نستخدم كلها if؟
ج الفرق الرئيسي: elif يُفحص فقط إذا لم تتحقق الشروط السابقة، بينما جمل if المستقلة تُفحص بغض النظر. مع ثلاث جمل if مستقلة لدرجة 85، "Excellent" و "Good" و "Average" كلها ستُنفّذ. مع if-elif-elif، فقط فرع "Good" الأول المتطابق سيشتغل. استخدم elif لـ "اختر واحداً"، استخدم جمل if متعددة لـ "افحص كل منها بشكل مستقل."
س لماذا يقوم VS Code تلقائياً بمسافة بادئة 4 مسافات بعد كتابتي if condition:؟
ج بايثون تتطلب مسافة بادئة بعد النقطتين. إضافة بايثون في VS Code تتعامل مع هذا تلقائياً. إذا نسيت المسافة البادئة، تثير بايثون IndentationError: expected an indented block. المسافة البادئة في بايثون ليست "اقتراح أسلوب" — إنها بناء جملة. مسافة بادئة خاطئة تعني أن الكود لن يعمل.
س هل يمكن للتعبيرات الثلاثية استخدام elif؟
ج لا. التعبيرات الثلاثية تتعامل فقط مع "اختر بين اثنين" (value1 if condition else value2). للخيارات المتعددة، يمكنك تداخل التعبيرات الثلاثية: a if cond1 else b if cond2 else c، لكن هذا غير موصى به بشدة — التعبيرات الثلاثية المتداخلة شبه غير قابلة للقراءة. استخدم if-elif-else العادي للفروع المتعددة.
س ما الفرق بين pass و return؟
ج pass تعني "لا تفعل شيئاً، استمر في التنفيذ"؛ return تعني "اخرج فوراً من الدالة الحالية وأرجع قيمة" (سنغطي هذا لاحقاً). استخدام pass في كتلة if يتخطى تلك الكتلة ويستمر. استخدام return في دالة يخرج من الدالة فوراً. إنهما مفهومان مختلفان تماماً.

📖 ملخص


📝 تمارين

  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%