تخيل إنك نادل بمقهى، وجاك زبون وقال: "عطني فنجان قهوة حجم ٥". كيف تعرف إن "٥" رقم فعلاً؟ يمكن يقصد خمسة صغيرة، يمكن يمزح، يمكن يكتب شي ما نفهمه أصلاً. البرنامج الذكي — مثلك — يتأكد قبل ما ينفذ.
القاعدة الذهبية للأمان: كل شي يكتبه المستخدم مشبوه حتى يثبت العكس. ليش؟ لأن input() تعطيك دائماً نصاً، والمستخدم يقدر يكتب أي شي بالدنيا: رقم، حروف، فراغ، أو حتى كود غريب يحاول يخرب برنامجك.
جرب هذا الكود الهش:
age = int(input("كم عمرك؟ "))
print("بعد 5 سنوات عمرك:", age + 5)الآن اكتب مكان العمر: "خمسة عشر". البرنامج ينهار! خطأ ValueError أحمر مخيف. المستخدم ما كتب رقماً، وint() ما تعرف تحول كلمات.
الحل: نتحقق أولاً بأدوات بايثون للنصوص:
age = input("كم عمرك؟ ")
if not age.isdigit():
print("اكتب أرقاماً فقط، مثل: 12")
elif int(age) < 1 or int(age) > 120:
print("هذا العمر غير منطقي!")
else:
print("بعد 5 سنوات عمرك:", int(age) + 5)وش صار هنا؟ ثلاثة دروب: إذا مو أرقام نعلمه بلطف. إذا الرقم غير منطقي (صفر أو 500 مثلاً) نرفضه. فقط إذا عدّى الفحص كله، نستخدمه.
أدوات التحقق المفضلة عندك:
x.isdigit() # هل النص كله أرقام؟ len(x) >= 3 # هل الطول معقول؟ x in ["نعم", "لا"] # هل الجواب من الخيارات المسموحة؟ x.strip() # نشيل الفراغات الزايدة من الأطراف
جرب بنفسك: سوّ برنامج يسأل عن اسم المستخدم ويرفض الاسم أقصر من حرفين أو أطول من 20. إذا عدّى الفحص، قل له أهلاً به!