جملة if الشرطية (The if Statement)
في عالم البرمجة، لا تسير الأمور دائماً في خط مستقيم. تخيل أنك تقود سيارة؛ هل تسير دائماً بنفس السرعة وفي نفس الاتجاه؟ بالطبع لا! أنت تتوقف عندما تكون الإشارة حمراء، وتنعطف يميناً إذا كان طريقك يتطلب ذلك، وتزيد السرعة إذا كان الطريق مفتوحاً. هذه هي "القرارات".
البرامج الذكية تعمل بنفس الطريقة. هي لا تنفذ الأوامر بشكل أعمى من السطر الأول للأخير، بل تتفاعل مع المعطيات. جملة if هي العقل المدبر الذي يمنح برنامجك القدرة على "التفكير" والاختيار بين مسارات مختلفة. هي الأداة التي تحول السكربت الجامد إلى مساعد ذكي يقول: "إذا حدث كذا، سأفعل كذا".
في هذا الدرس، سنغوص في عمق الجمل الشرطية، وسنتعلم كيف نكتب برامج يمكنها اتخاذ قرارات بناءً على مدخلات المستخدم، حالة البيانات، أو حتى الوقت والتاريخ.
1. لماذا نحتاج إلى الشروط؟
بدون الجمل الشرطية، ستكون البرامج مملة ومحدودة جداً. تخيل لعبة فيديو حيث يحدث نفس الشيء تماماً في كل مرة تلعب فيها، بغض النظر عن الأزرار التي تضغط عليها! أو تطبيق بنكي يسمح لك بسحب المال حتى لو كان رصيدك صفراً.
تسمح لنا الشروط بـ:
- التحقق من صحة البيانات: هل أدخل المستخدم بريداً إلكترونياً صحيحاً؟
- التحكم في تدفق البرنامج: هل يجب عرض صفحة المسؤول أم صفحة المستخدم العادي؟
- التعامل مع الحالات المختلفة: ماذا نفعل إذا انقطع الاتصال بالإنترنت؟
2. صيغة جملة if الأساسية
تتميز بايثون بصيغة نظيفة جداً وقريبة من اللغة الإنجليزية الطبيعية. البنية الأساسية تتكون من كلمة if، يليها الشرط الذي نريد اختباره، ثم نقطتان رأسيتان :.
السر في بايثون يكمن في المسافات البادئة (Indentation). الكود الذي يجب تنفيذه عند تحقق الشرط لا يوضع بين أقواس متعرجة {} كما في لغات أخرى (مثل C++ أو Java)، بل يتم تمييزه بإزاحته للداخل (عادة 4 مسافات).
# الصيغة العامة
# if condition:
# # كود يتم تنفيذه فقط إذا كان الشرط صحيحاً (True)
age = 20
# هل العمر أكبر من أو يساوي 18؟
if age >= 18:
print("أنت شخص بالغ.") # هذا السطر مزاح للداخل
print("يمكنك التصويت في الانتخابات.") # هذا السطر أيضاً مزاح
print("هذا السطر خارج جملة if وسيتم تنفيذه دائماً.") # عاد للإزاحة الأصلية
في بايثون، المسافة البادئة هي القانون! جميع الأسطر التي تتبع
if ولها نفس مقدار الإزاحة تعتبر "كتلة واحدة" (Block). إذا أخطأت في الإزاحة، سيعطيك بايثون خطأ IndentationError.
3. كيف يفكر المفسر (Interpreter)؟
عندما يقرأ بايثون الكود الخاص بك، فإنه يتبع منطقاً تسلسلياً دقيقاً عند مواجهة if:
- التقييم: ينظر إلى التعبير الموجود بعد
ifويحسب قيمته. هل هوTrueأمFalse؟ - القرار:
- إذا كان True: يدخل إلى "الكتلة المزاحة" وينفذ كل سطر فيها.
- إذا كان False: يقفز فوق الكتلة المزاحة تماماً وكأنها غير موجودة، ويكمل تنفيذ ما بعدها.
temperature = 35
if temperature > 30:
print("الجو حار اليوم! ☀️") # الشرط صحيح (35 > 30)، سيتم التنفيذ
print("لا تنس شرب الماء.")
if temperature < 10:
print("الجو بارد جداً! ❄️") # الشرط خاطئ (35 ليست أصغر من 10)، لن يتم التنفيذ
print("انتهى فحص الطقس.")
4. دمج المنطق: and, or, not
الحياة ليست دائماً شرطاً واحداً بسيطاً. أحياناً تحتاج لتحقق عدة شروط معاً. هنا نستخدم المعاملات المنطقية التي تعلمناها سابقاً لإنشاء شروط مركبة قوية.
username = "admin"
password = "123"
is_active = True
# شرط مركب: يجب أن تتحقق الثلاثة شروط معاً
if username == "admin" and password == "123" and is_active:
print("✅ تم تسجيل الدخول بنجاح!")
print("مرحباً بك في لوحة التحكم.")
# استخدام OR: يكفي تحقق شرط واحد
day = "Friday"
if day == "Friday" or day == "Saturday":
print("🎉 إنه يوم عطلة نهاية الأسبوع!")
# استخدام NOT: لعكس الشرط
is_banned = False
if not is_banned:
print("👍 حسابك سليم ويمكنك المشاركة.")
5. الشروط المتداخلة (Nested If)
مثلما تضع صندوقاً داخل صندوق، يمكنك وضع جملة if داخل جملة if أخرى. هذا يسمح لك ببناء منطق هرمي دقيق، حيث لا يتم فحص الشرط الداخلي إلا إذا تحقق الشرط الخارجي أولاً.
country = "Egypt"
age = 20
if country == "Egypt":
print("أنت في مصر.")
# هذه الجملة لن يتم الوصول إليها إلا إذا كنت في مصر
if age >= 18:
print("يمكنك استخراج رخصة قيادة مصرية.")
if age >= 21:
print("أنت كامل الأهلية القانونية.")
# مثال رياضي
num = 15
if num > 0:
print("الرقم موجب")
# فحص إضافي فقط للأرقام الموجبة
if num % 2 == 0:
print("وهو رقم زوجي")
if num > 10:
print("وهو أكبر من 10")
6. أخطاء شائعة (Debugging)
حتى المبرمجين المحترفين يقعون في هذه الأخطاء البسيطة. انتبه لها جيداً:
- نسيان النقطتين الرأسيتين
:: هذا هو الخطأ الأكثر شيوعاً! - الخلط بين
=و==: تذكر،=تضع قيمة في متغير، بينما==تسأل "هل هما متساويان؟". - فوضى الإزاحة: خلط المسافات (Spaces) مع علامات الجدولة (Tabs) أو عدم توحيد عدد المسافات.
x = 10
# ❌ خطأ: نسيان النقطتين
# if x > 5
# print("x is big")
# ✅ صحيح
if x > 5:
print("x is big")
# ❌ خطأ: استخدام = بدلاً من ==
# if x = 10:
# print("x is 10")
# ✅ صحيح
if x == 10:
print("x is 10")
7. تطبيق عملي: مقياس قوة كلمة المرور
لنطبق كل ما تعلمناه في برنامج مفيد. سنقوم بإنشاء "مدقق كلمات مرور" بسيط يحلل كلمة المرور التي يدخلها المستخدم ويعطيه ملاحظات حولها.
print("--- 🔐 فاحص قوة كلمة المرور ---")
password = input("أدخل كلمة المرور للفحص: ")
length = len(password)
print(f"\nطول كلمة المرور: {length} أحرف")
# 1. التحقق من الطول
if length < 8:
print("⚠️ كلمة المرور قصيرة جداً! يجب أن تكون 8 أحرف على الأقل.")
if length >= 8:
print("✅ طول كلمة المرور جيد.")
# 2. التحقق من وجود أرقام (باستخدام منطق بسيط)
# سنفترض أن المستخدم قد يدخل أرقاماً بسيطة
has_digit = False
if "1" in password or "2" in password or "3" in password or "4" in password:
has_digit = True
if has_digit:
print("✅ تحتوي على أرقام (جيد).")
if not has_digit:
print("⚠️ نصيحة: أضف أرقاماً لزيادة الأمان.")
# 3. التحقق من الكلمات الشائعة
if password == "12345678" or password == "password" or password == "admin":
print("❌ خطير: هذه كلمة مرور شائعة جداً وسهلة الاختراق!")
💡 فكر كالمبرمج
جملة if هي مجرد البداية. في كثير من الأحيان، نريد أن نقول للبرنامج: "إذا تحقق الشرط افعل كذا، وإلا فافعل شيئاً آخر". هذا يقودنا مباشرة إلى المفهوم التالي والأكثر إثارة: جملة else.
الخطوة التالية
ماذا لو لم يتحقق الشرط؟ كيف ننفذ كوداً بديلاً بشكل تلقائي؟
الدرس التالي: جملة else (البديل)