☰ خطة العام · تكنولوجيا المعلومات والاتصالات (بالعربية)

حين يخطئ الإدخال

الأسبوع 9 · الدرس ٥ «معالجة أخطاء مدخلات المستخدم في لغة Python»: ValueError وtry وexcept وإعادة المحاولة · 3 دروس
1

حين يخطئ الإدخال: ValueError

ICT Prep 3 Term 1, Unit 1, Lesson 5: pp. 54–63
الهدفأشرح لماذا يوقف المدخل الخاطئ البرنامج بخطأ ⁦ValueError⁩ وأحدد النصوص المكتوبة التي تقبلها ⁦int()⁩.
كلمات جديدة
الخطأ (⁦error⁩) · مشكلة تجعل بايثون توقف البرنامج⁦ValueError⁩ · الخطأ الذي يظهر حين لا يمكن تحويل قيمة مناسبة النوعمدخل غير صالح · شيء يكتبه المستخدم ولا يستطيع البرنامج استخدامهالانهيار (⁦crash⁩) · توقف البرنامج بسبب خطأ
الشرح

تلتقي البرامج بالمستخدمين، والمستخدمون يكتبون أشياء مفاجئة. انظر إلى البرنامج الذي يقرأ كم كتابًا عندك ثم يضيف ⁦1⁩. إذا كتب المستخدم ⁦7⁩ فالبرنامج يعمل. وإذا كتب كلمة ⁦seven⁩ فلا تستطيع ⁦int()⁩ صنع عدد صحيح منها وتتوقف بايثون بخطأ ⁦ValueError⁩. ولا يُنفَّذ أي شيء بعد ذلك السطر. ويعرض الجدول حالات أخرى. النص الفارغ يفشل. والعدد العشري مثل ⁦5.5⁩ يفشل أيضًا لأن ⁦int()⁩ تقبل فقط عددًا صحيحًا مكتوبًا بالأرقام ولا تقطع الجزء العشري. وهدف الدروس التالية برنامج لا ينهار عند المدخل الخاطئ بل يساعد المستخدم على المحاولة من جديد. وتذكّر الأسبوع الأول: هذه هي المشكلة التي قابلناها مع كلمة خمسة.

ما يكتبه المستخدمما تفعله int()
"7"7
"seven"ValueError
"" (لا شيء)ValueError
"5.5"ValueError
أمثلة محلولة
Python
1books = int(input("How many books? "))
2print("Next year:", books + 1)
Output
How many books? 7
Next year: 8
يعمل البرنامج حين يكتب المستخدم ⁦7⁩: فيعرض ⁦Next⁩ ⁦year⁩: ٨.
Python
1books = int(input("How many books? "))
2print("Next year:", books + 1)
Output
How many books? seven
ValueError: the text is not a whole number
يكتب المستخدم كلمة ⁦seven⁩. لا تستطيع ⁦int()⁩ تحويلها فتتوقف بايثون فورًا بخطأ ⁦ValueError⁩ ولا يُنفَّذ السطر الأخير.
نشاط الفصل

برنامج يقرأ كم قلمًا عندك. اصنع جدولًا من أربعة أشياء قد يكتبها المستخدم: اثنان ينجحان واثنان يفشلان. وفي كل واحد يفشل قل لماذا لا تستطيع ⁦int()⁩ تحويله. استخدم مدخلات مخترعة فقط.

تدرّب
1
ماذا تسبب ⁦int("seven")⁩؟
2
هل تعطي ⁦int("5.5")⁩ القيمة ٥؟
3
ماذا يحدث للأسطر التي بعد السطر الذي سبب الخطأ؟
4
ماذا يعرض البرنامج إذا كتب المستخدم ⁦12⁩؟