البرمجة

الشروط في Python — كيف تجعل برنامجك يتخذ قرارات؟

📅 2026-09-22⏱ 11 دقائق قراءة
حتى الآن، برامجنا تنفذ الأوامر بالترتيب من الأعلى إلى الأسفل — دون توقف، دون تفكير، دون قرارات. لكن البرامج الحقيقية تحتاج أن **تتخذ قرارات**: "إذا كان المستخدم بالغاً، اعرض محتوى معيناً"، "إذا كانت كلمة المرور صحيحة، اسمح بالدخول". هنا يأتي دور **الشروط (Conditions)** — التي تمنح برنامجك القدرة على التفكير واتخاذ القرارات. بنهاية هذا المقال، ستكون قادراً على: - استخدام `if` لتنفيذ كود عند تحقق شرط - استخدام `else` لتنفيذ بديل عند عدم التحقق - استخدام `elif` لسلسلة من الشروط - استخدام العوامل المنطقية `and`، `or`، `not` - بناء برامج تفاعلية تتخذ قرارات ذكية ## 1. جملة if — أساس كل الشروط ### ما هي جملة if؟ `if` هي أبسط أنواع الشروط. تخبر Python: "إذا تحقق هذا الشرط، نفّذ الكود التالي". ### الصيغة الأساسية ```python if الشرط: # الكود الذي يُنفذ عند تحقق الشرط ``` **⚠️ ملاحظات مهمة:** - الشرط ينتهي بنقطتين `:` - الكود بعدها يجب أن يكون **مُزاحاً** (Indented) بمسافة بادئة (4 مسافات أو Tab) - الإزاحة ليست تجميلية — إنها جزء من قواعد Python! ### أول مثال ```python age = 20 if age >= 18: print("أنت بالغ") print("هذا السطر يُنفذ دائماً") ``` **النتيجة:** ``` أنت بالغ هذا السطر يُنفذ دائماً ``` **شرح:** - `age = 20` → المتغير يساوي 20 - `if age >= 18:` → هل 20 أكبر من أو يساوي 18؟ نعم - `print("أنت بالغ")` → يُنفذ (لأنه داخل الـ if) - `print("هذا السطر...")` → يُنفذ دائماً (خارج الـ if) ### مثال: الشرط غير متحقق ```python age = 15 if age >= 18: print("أنت بالغ") print("هذا السطر يُنفذ دائماً") ``` **النتيجة:** ``` هذا السطر يُنفذ دائماً ``` **لاحظ:** سطر "أنت بالغ" لم يُنفذ لأن الشرط غير متحقق. ## 2. الإزاحة (Indentation) — قانون Python المقدس ### لماذا الإزاحة مهمة؟ Python تستخدم الإزاحة لتحديد **ما هو داخل الـ if** وما هو خارجه. هذا مختلف عن كثير من اللغات التي تستخدم `{ }`. ### مثال يوضح الفرق ```python age = 20 # صحيح — سطران داخل الـ if if age >= 18: print("أنت بالغ") print("يمكنك التصويت") print("هذا السطر خارج الـ if") ``` **النتيجة:** ``` أنت بالغ يمكنك التصويت هذا السطر خارج الـ if ``` ```python age = 20 # صحيح — سطر واحد فقط داخل الـ if if age >= 18: print("أنت بالغ") print("هذا السطر خارج الـ if دائماً") ``` **النتيجة:** ``` أنت بالغ هذا السطر خارج الـ if دائماً ``` ### الأخطاء الشائعة في الإزاحة **خطأ 1: نسيان الإزاحة** ```python # خطأ if age >= 18: print("أنت بالغ") ``` **الخطأ:** `IndentationError: expected an indented block` **خطأ 2: إزاحة غير متساوية** ```python # خطأ if age >= 18: print("أنت بالغ") print("يمكنك التصويت") # إزاحة إضافية ``` **الخطأ:** `IndentationError: unexpected indent` **القاعدة الذهبية:** استخدم **4 مسافات** ثابتة لكل مستوى إزاحة. ## 3. جملة else — البديل ### ما هي جملة else؟ `else` تعني: "إذا لم يتحقق الشرط، نفّذ هذا الكود بدلاً منه". ### الصيغة ```python if الشرط: # الكود عند تحقق الشرط else: # الكود عند عدم تحقق الشرط ``` ### مثال: التحقق من العمر ```python age = 15 if age >= 18: print("أنت بالغ") print("يمكنك الحصول على رخصة القيادة") else: print("أنت قاصر") print("انتظر حتى تبلغ 18") ``` **النتيجة:** ``` أنت قاصر انتظر حتى تبلغ 18 ``` ### مثال: التحقق من كلمة المرور ```python password = "python2026" if password == "python2026": print("✅ تم تسجيل الدخول") else: print("❌ كلمة المرور خاطئة") ``` **النتيجة:** ``` ✅ تم تسجيل الدخول ``` ## 4. جملة elif — سلسلة الشروط ### ما هي elif؟ `elif` اختصار لـ "else if" — تتيح لك فحص **عدة شروط** بالتتابع. ### الصيغة ```python if الشرط_الأول: # الكود elif الشرط_الثاني: # الكود elif الشرط_الثالث: # الكود else: # الكود الافتراضي ``` ### ترتيب التنفيذ: 1. **Python** يفحص الشرط الأول 2. إذا تحقق → ينفذ الكود ويتجاهل الباقي 3. إذا لم يتحقق → يفحص الشرط الثاني 4. وهكذا... 5. إذا لم يتحقق أي شرط → ينفذ `else` ### مثال: تقدير الدرجات ```python score = 85 if score >= 90: print("الدرجة: ممتاز (A)") elif score >= 80: print("الدرجة: جيد جداً (B)") elif score >= 70: print("الدرجة: جيد (C)") elif score >= 60: print("الدرجة: مقبول (D)") else: print("الدرجة: راسب (F)") ``` **النتيجة:** ``` الدرجة: جيد جداً (B) ``` **لماذا؟** - 85 ليس ≥ 90 → تخطى - 85 ≥ 80 → ✅ تحقق → نفّذ وتوقف ### مثال: تحديد الفئة العمرية ```python age = 25 if age < 13: print("طفل") elif age < 20: print("مراهق") elif age < 60: print("بالغ") else: print("كبير في السن") ``` **النتيجة:** ``` بالغ ``` ## 5. عوامل المقارنة — أدوات المقارنة ### جدول عوامل المقارنة: <table> <thead> <tr> <th>العامل</th> <th>المعنى</th> <th>مثال</th> <th>النتيجة</th> </tr> </thead> <tbody> <tr> <td><code>==</code></td> <td>يساوي</td> <td><code>5 == 5</code></td> <td>True</td> </tr> <tr> <td><code>!=</code></td> <td>لا يساوي</td> <td><code>5 != 3</code></td> <td>True</td> </tr> <tr> <td><code>&gt;</code></td> <td>أكبر من</td> <td><code>5 &gt; 3</code></td> <td>True</td> </tr> <tr> <td><code>&lt;</code></td> <td>أصغر من</td> <td><code>3 &lt; 5</code></td> <td>True</td> </tr> <tr> <td><code>&gt;=</code></td> <td>أكبر من أو يساوي</td> <td><code>5 &gt;= 5</code></td> <td>True</td> </tr> <tr> <td><code>&lt;=</code></td> <td>أصغر من أو يساوي</td> <td><code>3 &lt;= 5</code></td> <td>True</td> </tr> </tbody> </table> ### ⚠️ تحذير: `=` مقابل `==` **أشهر خطأ للمبتدئين:** ```python # خطأ — هذا إسناد وليس مقارنة if x = 5: print("x يساوي 5") # صحيح if x == 5: print("x يساوي 5") ``` **التفريق:** - `=` → إسناد: "اجعل x يساوي 5" - `==` → مقارنة: "هل x يساوي 5؟" ### أمثلة عملية ```python # مقارنة الأرقام num = 10 print(num == 10) # True print(num != 5) # True print(num > 5) # True print(num < 20) # True print(num >= 10) # True print(num <= 9) # False ``` ```python # مقارنة النصوص name = "أحمد" if name == "أحمد": print("مرحباً أحمد!") if name != "محمد": print("لست محمداً") ``` ## 6. العوامل المنطقية — دمج الشروط ### 1. `and` — و (يجب تحقق الشرطين) ```python age = 25 has_license = True if age >= 18 and has_license: print("يمكنك القيادة") else: print("لا يمكنك القيادة") ``` **النتيجة:** ``` يمكنك القيادة ``` **شرط `and`:** يجب أن يتحقق **الشرطين معاً**. ### 2. `or` — أو (يكفي تحقق شرط واحد) ```python day = "الجمعة" if day == "الجمعة" or day == "السبت": print("عطلة نهاية الأسبوع! 🎉") else: print("يوم عمل") ``` **النتيجة:** ``` عطلة نهاية الأسبوع! 🎉 ``` **شرط `or`:** يكفي تحقق **أحد الشرطين**. ### 3. `not` — ليس (عكس القيمة) ```python is_raining = False if not is_raining: print("الطقس جيد — لنخرج!") else: print("المطر ينزل — ابقَ في المنزل") ``` **النتيجة:** ``` الطقس جيد — لنخرج! ``` **شرط `not`:** يعكس القيمة (`True` → `False` والعكس). ### جدول الحقيقة (Truth Table): <table> <thead> <tr> <th>A</th> <th>B</th> <th>A and B</th> <th>A or B</th> <th>not A</th> </tr> </thead> <tbody> <tr> <td>True</td> <td>True</td> <td>True</td> <td>True</td> <td>False</td> </tr> <tr> <td>True</td> <td>False</td> <td>False</td> <td>True</td> <td>False</td> </tr> <tr> <td>False</td> <td>True</td> <td>False</td> <td>True</td> <td>True</td> </tr> <tr> <td>False</td> <td>False</td> <td>False</td> <td>False</td> <td>True</td> </tr> </tbody> </table> ### مثال شامل — نظام تسجيل دخول ```python username = "admin" password = "secret123" is_active = True if username == "admin" and password == "secret123" and is_active: print("✅ مرحباً بك في لوحة التحكم") elif username == "admin" and password == "secret123" and not is_active: print("⚠️ حسابك معطل — تواصل مع الدعم") else: print("❌ اسم المستخدم أو كلمة المرور خاطئة") ``` ## 7. الشروط المتداخلة (Nested if) ### ما هي الشروط المتداخلة؟ `if` داخل `if` آخر. نستخدمها عندما نحتاج فحص شرط إضافي بعد تحقق شرط سابق. ### مثال: نظام الخصومات ```python is_member = True purchase_amount = 150 if is_member: print("مرحباً بك في برنامج الولاء!") if purchase_amount >= 100: discount = purchase_amount * 0.20 print(f"خصم 20% = {discount} ريال") print(f"المبلغ النهائي: {purchase_amount - discount} ريال") else: discount = purchase_amount * 0.10 print(f"خصم 10% = {discount} ريال") print(f"المبلغ النهائي: {purchase_amount - discount} ريال") else: print("سجل عضوية للحصول على خصومات!") ``` **النتيجة:** ``` مرحباً بك في برنامج الولاء! خصم 20% = 30.0 ريال المبلغ النهائي: 120.0 ريال ``` ### ⚠️ نصيحة: تجنب التداخل العميق ```python # ❌ صعب القراءة if a: if b: if c: if d: print("...") # ✅ أفضل — استخدم العوامل المنطقية if a and b and c and d: print("...") ``` ## 8. التعبيرات الشرطية — سطر واحد ### الصيغة المختصرة ```python القيمة_إذا_تحقق = قيمة1 if الشرط else قيمة2 ``` ### مثال ```python age = 20 # الطريقة التقليدية if age >= 18: status = "بالغ" else: status = "قاصر" print(status) ``` **بالطريقة المختصرة:** ```python age = 20 status = "بالغ" if age >= 18 else "قاصر" print(status) ``` **النتيجة:** ``` بالغ ``` ### متى تستخدمها؟ - ✅ **استخدمها:** للشروط البسيطة على سطر واحد - ❌ **لا تستخدمها:** للشروط المعقدة (تقليل القراءة) ## 9. التحقق من القيم — Truthy و Falsy ### مفهوم مهم في Python في Python، بعض القيم تعتبر `False` تلقائياً في الشروط: <table> <thead> <tr> <th>القيمة</th> <th>Truthy / Falsy</th> </tr> </thead> <tbody> <tr> <td><code>0</code></td> <td>Falsy (يعني False)</td> </tr> <tr> <td><code>""</code> (نص فارغ)</td> <td>Falsy</td> </tr> <tr> <td><code>[]</code> (قائمة فارغة)</td> <td>Falsy</td> </tr> <tr> <td><code>None</code></td> <td>Falsy</td> </tr> <tr> <td>أي رقم ≠ 0</td> <td>Truthy (يعني True)</td> </tr> <tr> <td>أي نص غير فارغ</td> <td>Truthy</td> </tr> </tbody> </table> ### مثال عملي ```python name = input("ما اسمك؟ ") # الطريقة الطويلة if name != "": print(f"مرحباً {name}") # الطريقة الذكية (Pythonic) if name: print(f"مرحباً {name}") else: print("لم تدخل اسماً!") ``` ## 10. مشروع عملي — لعبة تخمين الرقم دعنا نطبق كل ما تعلمناه في مشروع ممتع. ### الكود الكامل ```python # لعبة تخمين الرقم # يختار الكمبيوتر رقماً، والمستخدم يحاول تخمينه import random print("=" * 45) print("🎮 لعبة تخمين الرقم") print("=" * 45) print("فكرت في رقم بين 1 و 100") print("حاول تخمينه!") print() # الكمبيوتر يختار رقماً عشوائياً secret_number = random.randint(1, 100) # المستخدم يدخل تخمينه guess = int(input("ما تخمينك؟ ")) # التحقق من التخمين if guess == secret_number: print(f"🎉 مبروك! الرقم {secret_number} صحيح!") elif guess < secret_number: print(f"⬆️ الرقم السري أكبر من {guess}") print(f"الإجابة كانت: {secret_number}") else: print(f"⬇️ الرقم السري أصغر من {guess}") print(f"الإجابة كانت: {secret_number}") ``` ### عند التشغيل ``` ============================================= 🎮 لعبة تخمين الرقم ============================================= فكرت في رقم بين 1 و 100 حاول تخمينه! ما تخمينك؟ 50 ⬆️ الرقم السري أكبر من 50 الإجابة كانت: 73 ``` ### شرح الكود <table> <thead> <tr> <th>السطر</th> <th>الشرح</th> </tr> </thead> <tbody> <tr> <td><code>import random</code></td> <td>استيراد مكتبة الأرقام العشوائية</td> </tr> <tr> <td><code>random.randint(1, 100)</code></td> <td>اختيار رقم عشوائي بين 1 و 100</td> </tr> <tr> <td><code>int(input(...))</code></td> <td>قراءة رقم من المستخدم وتحويله لعدد صحيح</td> </tr> <tr> <td><code>if guess == secret_number:</code></td> <td>هل التخمين صحيح؟</td> </tr> <tr> <td><code>elif guess &lt; secret_number:</code></td> <td>هل التخمين أصغر؟</td> </tr> </tbody> </table> ## 11. أخطاء شائعة للمبتدئين ### الخطأ 1: نسيان النقطتين ```python # خطأ if age >= 18 print("بالغ") # صحيح if age >= 18: print("بالغ") ``` **الخطأ:** `SyntaxError: expected ':'` ### الخطأ 2: استخدام `=` بدلاً من `==` ```python # خطأ if age = 18: print("عمرك 18") # صحيح if age == 18: print("عمرك 18") ``` **الخطأ:** `SyntaxError: invalid syntax` ### الخطأ 3: إزاحة غير صحيحة ```python # خطأ if age >= 18: print("بالغ") # صحيح if age >= 18: print("بالغ") ``` **الخطأ:** `IndentationError` ### الخطأ 4: مقارنة أنواع مختلفة ```python # خطأ — سيرفع TypeError age = "18" # نص وليس رقم if age >= 18: print("بالغ") # صحيح age = 18 if age >= 18: print("بالغ") ``` ### الخطأ 5: شرط دائماً True ```python # خطأ — "5" نص وليس رقم if "5" > 3: # لا يمكن مقارنة نص برقم (في Python 3) ... ``` ## 12. تمارين عملية ### التمرين 1: التحقق من كلمة المرور اكتب برنامجاً: - يطلب كلمة المرور - إذا كانت `"python2026"` → "تم الدخول" - إذا كانت مختلفة → "كلمة المرور خاطئة" ### التمرين 2: أعلى رقم اكتب برنامجاً: - يطلب 3 أرقام من المستخدم - يطبع الأعلى منها ### التمرين 3: آلة حاسبة بسيطة اكتب برنامجاً: - يطلب رقمين وعملية (+, -, *, /) - يطبع النتيجة - يتعامل مع القسمة على صفر **مثال:** ``` الرقم الأول: 10 العملية: / الرقم الثاني: 0 ❌ لا يمكن القسمة على صفر ``` ### التمرين 4: التحقق من البريد اكتب برنامجاً: - يطلب بريداً إلكترونياً - يتحقق من احتوائه على `@` و `.` - يطبع "بريد صحيح" أو "بريد خاطئ" ## قائمة تحقق — هل تعلمت؟ <table> <thead> <tr> <th>المهارة</th> <th>الحالة</th> </tr> </thead> <tbody> <tr> <td>استخدام <code>if</code> البسيطة</td> <td>⬜</td> </tr> <tr> <td>استخدام <code>else</code> كبديل</td> <td>⬜</td> </tr> <tr> <td>استخدام <code>elif</code> لسلسلة شروط</td> <td>⬜</td> </tr> <tr> <td>فهم الإزاحة في Python</td> <td>⬜</td> </tr> <tr> <td>استخدام عوامل المقارنة (<code>==</code>, <code>&gt;</code>, <code>&lt;</code>...)</td> <td>⬜</td> </tr> <tr> <td>استخدام العوامل المنطقية (<code>and</code>, <code>or</code>, <code>not</code>)</td> <td>⬜</td> </tr> <tr> <td>الشروط المتداخلة</td> <td>⬜</td> </tr> <tr> <td>التعبيرات الشرطية المختصرة</td> <td>⬜</td> </tr> <tr> <td>بناء مشروع تخمين الرقم</td> <td>⬜</td> </tr> </tbody> </table> ## الخلاصة في هذا المقال، تعلمت: 1. **جملة `if`** — أساس كل الشروط 2. **الإزاحة** — قاعدة Python المقدسة 3. **جملة `else`** — البديل عند عدم التحقق 4. **جملة `elif`** — سلسلة الشروط 5. **عوامل المقارنة** — `==`, `!=`, `>`, `<`, `>=`, `<=` 6. **العوامل المنطقية** — `and`, `or`, `not` 7. **الشروط المتداخلة** — `if` داخل `if` 8. **التعبيرات الشرطية** — سطر واحد 9. **Truthy و Falsy** — القيم في Python **الشروط هي ما يجعل برنامجك ذكياً** — بدونها، سينفذ الأوامر بشكل أعمى. **في المقال القادم:** سنتعلم **الحلقات (Loops)** — كيف تكرر المهام بكفاءة! **جرب التمارين الأربعة قبل الانتقال للمقال التالي. الممارسة هي المفتاح!** **هل نجحت في حل التمارين؟ شاركنا في التعليقات!**