البرمجة
الشروط في 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>></code></td>
<td>أكبر من</td>
<td><code>5 > 3</code></td>
<td>True</td>
</tr>
<tr>
<td><code><</code></td>
<td>أصغر من</td>
<td><code>3 < 5</code></td>
<td>True</td>
</tr>
<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>3 <= 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 < 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>></code>, <code><</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)** — كيف تكرر المهام بكفاءة!
**جرب التمارين الأربعة قبل الانتقال للمقال التالي. الممارسة هي المفتاح!**
**هل نجحت في حل التمارين؟ شاركنا في التعليقات!**