البرمجة

حل مشكلة str’ object is not callable في Python

الخطأ “str’ object is not callable” يحدث عندما تحاول استدعاء دالة تحمل اسم نفس اسم متغير سلسلة نصية. في الحالة الخاصة هنا، تقوم بتعريف دالة بإسم xlwt وتستدعيها في دالة xlwt()، ولكنك في الواقع تقوم بإعطاء اسم متغير يحمل نفس الاسم xlwt لنص. هذا النص يتسبب في الخطأ عند محاولة استدعاء الدالة.

لحل هذا الخطأ، قم بتغيير اسم المتغير النصي من xlwt إلى اسم آخر غير متعارض مع اسم الدالة، مثل xlwt_str على سبيل المثال. قم بتعديل الكود كما يلي:

python
def xlwt_str(): print ("Do you want to write to excel?") excel = input() if excel == "y" or "yes": excel() else: print ("Bye") sys.exit()

ثم قم بتحديث الاستدعاء في دالة xlwt() لاستدعاء الدالة الصحيحة:

python
def xlwt(): print ("Do you want to write to excel?") excel = input() if excel == "y" or "yes": xlwt_str() else: print ("Bye") sys.exit()

بعد هذه التعديلات، يجب أن يعمل الكود بدون أخطاء ويتمكن من كتابة البيانات إلى ملف إكسل بنجاح.

المزيد من المعلومات

بالتأكيد! الخطأ “str’ object is not callable” يحدث عندما يتم استدعاء كائن من نوع str كما لو كان دالة. في الشفرة التي قدمتها، يحدث هذا الخطأ في الدالة xlwt() حيث تقوم بفحص إذا كان المستخدم يرغب في الكتابة إلى ملف إكسل، وإذا كان الجواب بنعم، تحاول استدعاء دالة excel().

المشكلة هنا هي أنك تقوم بتعيين نص “y” أو “yes” إلى متغير excel، وعند الفحص تقوم بكتابة if excel == "y" or "yes":، هذا الشرط لا يفحص إذا كان المتغير excel يحتوي على “y” أو “yes”، بل يقوم بفحص إذا كان “yes” غير فارغ، وبما أنه ليس فارغًا، فإن الشرط يعتبر صحيحًا، وبالتالي يحاول استدعاء excel() وهنا تأتي الخطأ.

لحل المشكلة، يجب تعديل الشرط ليكون if excel == "y" or excel == "yes": بحيث يتم فحص إذا كان المتغير excel يحتوي على “y” أو “yes” بشكل صحيح.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر