قراءة مدخلات المستخدم وتحويلها إلى أعداد صحيحة مهمة شائعة في برمجة بايثون. تتطلب هذه العملية الانتباه الدقيق لمعالجة الأخطاء لضمان عدم تعطل برنامجك عند مواجهة مدخلات غير متوقعة. سترشدك هذه المقالة من خلال أفضل الممارسات لقراءة مدخلات الأعداد الصحيحة في بايثون، شاملةً بايثون 3 و بايثون 2.
جدول المحتويات
- قراءة مدخلات الأعداد الصحيحة في بايثون 3
- معالجة الأخطاء المتينة في بايثون 3
- قراءة مدخلات الأعداد الصحيحة في بايثون 2
- معالجة الأخطاء المتينة في بايثون 2
- أفضل الممارسات والتقنيات المتقدمة
- الأسئلة الشائعة
قراءة مدخلات الأعداد الصحيحة في بايثون 3
يستخدم بايثون 3 دالة input()
لقراءة مدخلات المستخدم. هذه الدالة تُرجع دائمًا سلسلة نصية، لذلك يجب عليك تحويلها صراحةً إلى عدد صحيح باستخدام int()
. ومع ذلك، فإن المدخلات غير الصحيحة ستسبب خطأ. أفضل نهج هو استخدام كتلة try-except
لمعالجة استثناءات ValueError
المحتملة.
while True:
try:
user_input = input("أدخل عددًا صحيحًا: ")
number = int(user_input)
break # الخروج من الحلقة إذا كانت المدخلات صالحة
except ValueError:
print("مدخلات غير صالحة. يرجى إدخال عدد صحيح.")
print("أدخلت:", number)
معالجة الأخطاء المتينة في بايثون 3
تضمن حلقة while True
أن البرنامج يستمر في مطالبة المستخدم حتى يتم إدخال عدد صحيح صالح. قد تتضمن معالجة الأخطاء الأكثر تطوراً رسائل خطأ محددة لأنواع مختلفة من المدخلات غير الصالحة أو التحقق من صحة المدخلات باستخدام التعبيرات العادية لحالات أكثر تعقيدًا.
قراءة مدخلات الأعداد الصحيحة في بايثون 2
في بايثون 2، raw_input()
هي الطريقة المفضلة لقراءة مدخلات المستخدم كسلسلة نصية. تجنب استخدام input()
في بايثون 2 لأنه يحاول تقييم المدخلات، مما قد يؤدي إلى ثغرات أمنية وسلوك غير متوقع.
while True:
try:
user_input = raw_input("أدخل عددًا صحيحًا: ")
number = int(user_input)
break
except ValueError:
print "مدخلات غير صالحة. يرجى إدخال عدد صحيح."
print "أدخلت:", number
معالجة الأخطاء المتينة في بايثون 2
معالجة الأخطاء في بايثون 2 مشابهة لبايثون 3، باستخدام كتلة try-except
. تضمن تقنية التكرار نفسها كما هو موضح أعلاه عدم تعطل البرنامج عند وجود مدخلات غير صالحة.
أفضل الممارسات والتقنيات المتقدمة
تحقق دائمًا من صحة مدخلات المستخدم. لا تفترض أن المستخدم سيقدم نوع البيانات المتوقع. إن استخدام كتل try-except
جزء أساسي من معالجة الأخطاء المتينة. ضع في اعتبارك إضافة معالجة استثناءات أكثر تحديدًا (مثل، معالجة KeyboardInterrupt
) بناءً على احتياجات تطبيقك. بالنسبة لسياقات التحقق المعقدة، يمكن أن تكون التعبيرات العادية أداة قوية.
الأسئلة الشائعة
- س: ماذا يحدث إذا أدخل المستخدم رقمًا ذو فاصلة عشرية؟
ج: تقوم دالةint()
بقطع الجزء العشري، وتحويل الرقم ذو الفاصلة العشرية إلى عدد صحيح (مثل،int(3.14)
يعيد3
). لمعالجة الأرقام ذات الفاصلة العشرية، استخدمfloat()
. - س: كيف يمكنني معالجة أنواع أخرى من الأخطاء؟
ج: أضف المزيد من كتلexcept
لمعالجة استثناءات محددة مثلKeyboardInterrupt
أوEOFError
. - س: هل هناك طرق للتحقق من الصحة أكثر إيجازًا؟
ج: بينماtry-except
واضحة، تقدم التعبيرات العادية حلولًا أكثر إيجازًا لقواعد التحقق المعقدة.