تخطَّ إلى المحتوى

الأخطاء الشائعة: السبب والإصلاح

منقول من الكتاب المرجعي: docs/handbook/errors/common.md · الإيداع 7a52f6c

لكل خطأ مثال يسببه (الناتج كما يطبعه المجمّع، برمز خروجه) ومثال يصلحه؛ كلاهما يُشغَّل في tests/test_docs.py. الفهرس الكامل لكل رسالة في فهرس رسائل الأخطاء والتحذيرات. رمز 2: خطأ ترجمة لم يُنفَّذ معه شيء؛ رمز 3: خطأ تشغيل، ويبقى ما طُبع قبله.

يسببه:

مثال
اطبع("العمر " + 30)
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
​[خطأ دلالي E0226] سطر 1:15 - لا يمكن جمع 'نص' و 'عدد' بـ '+': النوعان مختلفان ولا تحويل تلقائياً   1 | اطبع("العمر " + 30)     |               ^  تلميح: حوّل القيمة صراحةً ليصير الطرفان نصين: "العدد " + نص(5)   أو افصل القيم بفاصلة داخل اطبع: اطبع("العدد ", 5)

رمز الخروج: 2

في فهرس الأخطاء: E0226

يصلحه:

مثال
اطبع("العمر " + نص(30))
اطبع("العمر ", 30)
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
العمر 30العمر 30

يسببه:

مثال
س = 3
اذا س > 2
اطبع(س)
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
​[خطأ نحوي E0019] سطر 2:10 - انتهى السطر بشكل مفاجئ: متوقع ':'   2 | اذا س > 2     |          ^  تلميح: هل نسيت ':' في نهاية سطر الشرط؟

رمز الخروج: 2

في فهرس الأخطاء: E0019

يصلحه:

مثال
س = 3
اذا س > 2:
اطبع(س)
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
3

يسببه:

مثال
اذا صواب:
اطبع(1)
اطبع(2)
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
​[خطأ لفظي E0006] سطر 3:1 - المسافة البادئة (2) لا تطابق أي مستوى سابق   3 |   اطبع(2)     | ^~  تلميح: للعودة إلى كتلة سابقة استخدم نفس عدد مسافاتها تماماً (المستويات المفتوحة الآن: 4 أو 0).

رمز الخروج: 2

في فهرس الأخطاء: E0006

يصلحه:

مثال
اذا صواب:
اطبع(1)
اطبع(2)
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
12

متغير غير معرَّف (أو خطأ إملائي)

رابط إلى قسم «متغير غير معرَّف (أو خطأ إملائي)»

يسببه:

مثال
عداد = 1
اطبع(عدد_)
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
​[خطأ دلالي E0138] سطر 2:6 - المتغير 'عدد_' غير معرف في هذا النطاق   2 | اطبع(عدد_)     |      ^~~~  تلميح: هل تقصد 'عداد'؟

رمز الخروج: 2

في فهرس الأخطاء: E0138

يصلحه:

مثال
عداد = 1
اطبع(عداد)
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
1

يسببه:

مثال
س = 1
س = "واحد"
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
​[خطأ دلالي E0408] سطر 2:1 - لا يمكن تعيين قيمة من النوع 'نص' للمتغير 'س' من النوع 'عدد'   2 | س = "واحد"     | ^  تلميح: النصوص لا تتحول إلى أعداد تلقائياً.

رمز الخروج: 2

في فهرس الأخطاء: E0408

يصلحه:

مثال
س = 1
وصف = "واحد"
اطبع(س, " ", وصف)
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
1 واحد

يسببه:

مثال
اطبع(ضعف(2))
داله ضعف(س عدد) عدد:
ارجع س * 2
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
​[خطأ دلالي E0125] سطر 1:6 - الدالة أو الهيكل 'ضعف' غير معرّف   1 | اطبع(ضعف(2))     |      ^~~  تلميح: هل تقصد 'اضف'؟

رمز الخروج: 2

في فهرس الأخطاء: E0125

يصلحه:

مثال
داله ضعف(س عدد) عدد:
ارجع س * 2
اطبع(ضعف(2))
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
4

يسببه:

مثال
ق = [1, 2, 3]
اطبع(ق[3])
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
[خطأ تشغيل E0321] سطر 2:7 - الفهرس 3 خارج الحدود (الحجم 3)  اطبع(ق[3])

رمز الخروج: 3

في فهرس الأخطاء: E0321

يصلحه:

مثال
ق = [1, 2, 3]
اطبع(ق[طول(ق) - 1])
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
3

يسببه:

مثال
ع = {"سارة": 30}
اطبع(ع["علي"])
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
[خطأ تشغيل E0337] سطر 2:7 - المفتاح 'علي' غير موجود في القاموس  اطبع(ع["علي"])

رمز الخروج: 3

في فهرس الأخطاء: E0337

يصلحه:

مثال
ع = {"سارة": 30}
اذا يحوي(ع, "علي"):
اطبع(ع["علي"])
غير ذلك:
اطبع("لا عمر لعلي")
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
لا عمر لعلي

يسببه:

مثال
ب = 0
اطبع(10 / ب)
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
[خطأ تشغيل E0403] سطر 2:9 - القسمة على صفر  اطبع(10 / ب)

رمز الخروج: 3

في فهرس الأخطاء: E0403

يصلحه:

مثال
ب = 0
اذا ب != 0:
اطبع(10 / ب)
غير ذلك:
اطبع("لا قسمة على صفر")
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
لا قسمة على صفر

يسببه:

مثال
س عدد = 2.5
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
​[خطأ دلالي E0252] سطر 1:9 - نوع القيمة المسندة 'كسر' لا يطابق النوع المحدد 'عدد'   1 | س عدد = 2.5     |         ^  تلميح: لا يوجد تحويل تلقائي من كسر إلى عدد.

رمز الخروج: 2

في فهرس الأخطاء: E0252

يصلحه:

مثال
س عدد = عدد(2.5)
ك كسر = 2.5
اطبع(س, " ", ك)
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
2 2.5

تحويل نص إلى عدد بلا معالجة الفشل

رابط إلى قسم «تحويل نص إلى عدد بلا معالجة الفشل»

عدد(نص) من النوع !عدد: النص قد لا يكون عدداً، فيُعالَج في موضعه.

يسببه:

مثال
اطبع(عدد("ثلاثة") + 1)
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
​[خطأ دلالي E0399] سطر 1:6 - 'عدد(...)' من النوع '!عدد' (قد يفشل) ولا يُستعمل كأنه 'عدد'   1 | اطبع(عدد("ثلاثة") + 1)     |      ^~~  تلميح: عالج الخطأ في موضعه:  جرّب عدد(...)  (يمرّر الخطأ إلى مستدعي الدالة)   أو   عدد(...) والا قيمة_بديلة   أو   عدد(...) والا خ:  ثم كتلة تعالج «خ»

رمز الخروج: 2

في فهرس الأخطاء: E0399

يصلحه:

مثال
اطبع((عدد("ثلاثة") والا 0) + 1)
ن = عدد("٣") والا خ:
اطبع("ليس عدداً: ", خ)
0
اطبع(ن)
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
13

يسببه:

مثال
استورد ملفات
ملفات.اكتب_ملف("ناتج.txt", "سطر\n")
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
​[خطأ دلالي E0397] مثال.م:2:7 - نتيجة 'ملفات.اكتب_ملف(...)' من النوع '!فراغ' مهملة: قد يكون خطأً لم يُعالَج   2 | ملفات.اكتب_ملف("ناتج.txt", "سطر\n")     |       ^~~~~~~~~~~~~~  تلميح: عالج الخطأ في موضعه:  جرّب ملفات.اكتب_ملف(...)  (يمرّر الخطأ إلى مستدعي الدالة)   أو   ملفات.اكتب_ملف(...) والا خ:  ثم كتلة   أو   ملفات.اكتب_ملف(...) والا خ:  ثم كتلة تعالج «خ»

رمز الخروج: 2

في فهرس الأخطاء: E0397

يصلحه:

مثال
استورد ملفات
ملفات.اكتب_ملف("ناتج.txt", "سطر\n") والا خ:
اطبع("تعذّرت الكتابة: ", خ)
جرّب ملفات.الحق_بملف("ناتج.txt", "سطر ثانٍ\n")
اطبع(جرّب ملفات.اقرأ_ملف("ناتج.txt"))
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
سطرسطر ثانٍ​

يسببه:

مثال
داله اقرأ_عدد(ن نص) عدد:
ارجع جرّب عدد(ن)
اطبع(اقرأ_عدد("5"))
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
​[خطأ دلالي E0052] سطر 2:10 - 'جرّب' في الدالة 'اقرأ_عدد' التي لا ترجع خطأ (نوعها 'عدد')   2 |     ارجع جرّب عدد(ن)     |          ^~~~  تلميح: اجعل نوع إرجاعها '!عدد' كي يمرّ الخطأ إلى مستدعيها، أو عالجه هنا بـ والا: التعبير والا قيمة_بديلة

رمز الخروج: 2

في فهرس الأخطاء: E0052

يصلحه:

مثال
داله اقرأ_عدد(ن نص) !عدد:
ارجع جرّب عدد(ن)
اطبع(اقرأ_عدد("5") والا -1, " ", اقرأ_عدد("س") والا -1)
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
5 -1

يسببه:

مثال
داله اشارة(س عدد) نص:
اذا س > 0:
ارجع "موجب"
اطبع(اشارة(-1))
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
​[تحذير دلالي E0266] سطر 1:1 - الدالة 'اشارة' قد تنتهي دون إرجاع قيمة   1 | داله اشارة(س عدد) نص:     | ^~~~~  تلميح: أضف 'ارجع قيمة' في نهاية الدالة وفي كل مسار من مسارات الشروط.[خطأ تشغيل E0339] سطر 1:1 - انتهت الدالة 'اشارة' دون إرجاع قيمة من النوع 'نص' (أضف 'ارجع' في كل المسارات)  داله اشارة(س عدد) نص:

رمز الخروج: 3

في فهرس الأخطاء: E0266، E0339

يصلحه:

مثال
داله اشارة(س عدد) نص:
اذا س > 0:
ارجع "موجب"
ارجع "غير موجب"
اطبع(اشارة(-1))
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
غير موجب

يسببه:

مثال
اطبع([1, 2] == [1, 2])
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
​[خطأ دلالي E0147] سطر 1:13 - المقارنة المباشرة للقوائم والمصفوفات والقواميس والهياكل غير مدعومة   1 | اطبع([1, 2] == [1, 2])     |             ^~  تلميح: قارن العناصر واحداً واحداً (مثل م[0] == ن[0]).

رمز الخروج: 2

في فهرس الأخطاء: E0147

يصلحه:

مثال
ا = [1, 2]
ب = [1, 2]
متساويتان = طول(ا) == طول(ب)
لكل ف في مدى(0, طول(ا)):
اذا ا[ف] != ب[ف]:
متساويتان = خطاء
اطبع(متساويتان)
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
صواب

يسببه:

مثال
م = جديد(1)
حرر(م)
حرر(م)
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
[خطأ تشغيل E0349] سطر 3:1 - تحرير مؤشر قيمته لاشيء (هل حُرّر من قبل؟)  حرر(م)

رمز الخروج: 3

في فهرس الأخطاء: E0349

يصلحه:

مثال
م = جديد(1)
حرر(م)
اطبع(م == لاشيء)
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
صواب

يسببه:

مثال
م = احجز_خام(عدد, 2)
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
​[خطأ دلالي E0414] سطر 1:5 - 'احجز_خام' لا تُكتب إلا داخل منطقة 'خطر'   1 | م = احجز_خام(عدد, 2)     |     ^~~~~~~~  تلميح: ضعها في كتلة  خطر:  أو في دالة معرَّفة بـ  خطر داله ...

رمز الخروج: 2

في فهرس الأخطاء: E0414

يصلحه:

مثال
ش = احجز(عدد, 2)
ش[1] = 5
اطبع(ش)
حرر(ش)
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
[0, 5]