الخطأ “str’ object is not callable” يحدث عندما تحاول استدعاء دالة تحمل اسم نفس اسم متغير سلسلة نصية. في الحالة الخاصة هنا، تقوم بتعريف دالة بإسم xlwt
وتستدعيها في دالة xlwt()
، ولكنك في الواقع تقوم بإعطاء اسم متغير يحمل نفس الاسم xlwt
لنص. هذا النص يتسبب في الخطأ عند محاولة استدعاء الدالة.
لحل هذا الخطأ، قم بتغيير اسم المتغير النصي من xlwt
إلى اسم آخر غير متعارض مع اسم الدالة، مثل xlwt_str
على سبيل المثال. قم بتعديل الكود كما يلي:
pythondef xlwt_str():
print ("Do you want to write to excel?")
excel = input()
if excel == "y" or "yes":
excel()
else:
print ("Bye")
sys.exit()
ثم قم بتحديث الاستدعاء في دالة xlwt()
لاستدعاء الدالة الصحيحة:
pythondef 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” بشكل صحيح.