تعلم Python: حل مشكلة TypeError في برنامج الشراء والفواكه
في البداية، دعوني أساعدك في فهم الخطأ الذي تواجهه في الكود. الخطأ يظهر في السطر:
pythontotal += item
حيث أن المتغير total
هو عدد صحيح (integer)، ولكن item
هو اسم العنصر في القائمة، وهو نص (string). لذا، لا يمكن إجراء عملية جمع بين نص وعدد صحيح، مما يؤدي إلى ظهور خطأ TypeError.
لحل هذا الخطأ، يجب عليك استخدام قيم الأسعار من القائمة prices
بدلاً من اسماء الفواكه نفسها. يمكنك تحقيق ذلك عن طريق تغيير السطر المشار إليه إلى:
pythontotal += prices[item]
الآن، سأوضح بعض التفاصيل حول الكود. يظهر أنك تقوم بتعريف قائمة shopping_list
وقائمتين إضافيتين stock
و prices
. القائمة shopping_list
تحتوي على الفواكه التي تريد شراؤها، و stock
تحتوي على الكميات المتوفرة من تلك الفواكه، بينما prices
تحتوي على أسعار الفواكه.
ثم قمت بتعريف دالة compute_bill
التي تأخذ قائمة من الفواكه كمعامل وتقوم بحساب إجمالي الفاتورة بناءً على الأسعار المحددة في قائمة prices
. ولكن، كما ذكرت سابقًا، كان هناك خطأ في الكود يحتاج إلى تصحيح.
أخيرًا، في الحلقة الأخيرة، قمت بتكرار القيام بحساب الفاتورة لكل فاكهة في prices
وطباعة الناتج. ولكن يجب عليك استدعاء الدالة compute_bill
بإعطائها قائمة shopping_list
للحصول على الإجمالي الصحيح.
باختصار، يحتاج الكود إلى بعض التعديلات لضمان عمله السليم.
المزيد من المعلومات
بالطبع، دعوني أوسع في شرح الكود وأقدم لك مزيدًا من المعلومات حول كيفية استخدام هذا البرنامج البسيط. في البداية، يبدو أن الكود يقوم بمحاكاة عملية شراء الفواكه من محل تجاري، حيث يوجد لديك قائمة بالفواكه التي ترغب في شرائها وكمياتها المتوفرة في المخزن، بالإضافة إلى أسعار تلك الفواكه.
القائمة shopping_list
هي القائمة التي تحدد الفواكه التي تريد شراؤها، والقوائم stock
و prices
تحتويان على المخزون المتاح وأسعار الفواكه على التوالي. يقوم الكود بدورة عبر العناصر في قائمة shopping_list
باستخدام دالة compute_bill
، حيث يتم حساب إجمالي الفاتورة عن طريق جمع أسعار الفواكه الموجودة في prices
.
الخطأ الذي قمت بتصحيحه كان يتسبب في ذلك لأن الكود كان يحاول جمع اسماء الفواكه (item
) مباشرة بدلاً من جمع قيمها في قائمة prices
. بعد التعديل الذي أوضحته سابقًا، يمكنك الآن تشغيل البرنامج بشكل صحيح للحصول على إجمالي الفاتورة الصحيح.
هناك فرصة لتحسين الكود بإضافة التحقق من توفر الكميات في المخزن قبل إضافة الفاكهة إلى الفاتورة، ويمكن أيضًا إضافة رسائل توضيحية لتسهيل فهم كيفية عمل البرنامج. بالمجمل، يمكن أن يكون هذا البرنامج خطوة جيدة لتعلم مفاهيم البرمجة باستخدام لغة Python، ويفتح الباب لاستكشاف مزيد من المفاهيم والتقنيات.