السلام عليكم يا جماعة لما عملت مشروع كتالوج المكتبة كنا عملنا مجموعة من الوظائف على حسب الاختيار لما استدعي الوظيفة 2 او غيرها تطبعلي انو المتغير غير معرف مع انو معرف في الوظيفة الأولى؟!! معرفت المشكل فين !!
يبدو أن المشكلة التي تواجهينها تتعلق بعدم تعريف المتغير ISBN
في السياق الحالي للوظيفة التي تحاولين استدعاءها.
في Python، إذا تم تعريف متغير داخل وظيفة، فإنه يعتبر متغيرًا محليًا لتلك الوظيفة فقط ولا يمكن الوصول إليه من وظائف أخرى مباشرةً. بمعنى آخر، إذا قمت بتعريف ISBN
في وظيفة واحدة، فلا يمكن للوظائف الأخرى الوصول إليه إلا إذا تم تمريره كمعامل (parameter) أو تم تعريفه كمتغير عام (global variable).
إليك بعض النصائح لإصلاح هذه المشكلة:
-
التأكد من تمرير المتغيرات بين الوظائف:
- إذا كان المتغير
ISBN
معرفًا في وظيفة وتحتاجين إلى استخدامه في وظيفة أخرى، عليك تمريره كمعامل عند استدعاء الوظيفة الأخرى.
def first_function(): ISBN = "1002" check_out_book(ISBN) def check_out_book(ISBN): if catalog[ISBN]["Available"] == True: # تنفيذ العملية المطلوبة
- إذا كان المتغير
-
استخدام المتغيرات العامة (Global Variables):
- يمكنك أيضًا تعريف
ISBN
كمتغير عام إذا كنت بحاجة إلى الوصول إليه عبر وظائف متعددة، ولكن هذا الحل قد يكون أقل مرونة وأقل أمانًا في بعض الحالات.
ISBN = None def first_function(): global ISBN ISBN = "1002" def check_out_book(): global ISBN if catalog[ISBN]["Available"] == True: # تنفيذ العملية المطلوبة
- يمكنك أيضًا تعريف
-
التأكد من أن المتغير معرف قبل استدعاء الوظيفة:
- تأكدي أن المتغير
ISBN
معرف وأنه يحتوي على قيمة قبل استدعاء الوظيفة التي تحاول استخدامه فيها.
- تأكدي أن المتغير
إذا اتبعت هذه النصائح وما زالت المشكلة قائمة، أود الاطلاع على جزء أكبر من الكود لمساعدتك بشكل أدق.
حضرتك بتقولي لما بتعملي check out للكتاب او تختاري اي اختيار تاني بيظهر خطأ إن isbn غير معرف …
ممكن السبب يكون انك حاطاه بين علامتين تنصين بالتالي يحدث خطأ…
الكود هيكون بالشكل ده
ــــــــــــــــــ
بالنسبة للوظيفة رقم 2 check out
شكرا اخي بارك الله فيك
لما استدعيت الفانكشن لم انتبه اني عملت متغير اخر للisbn لذلك السبب لم يعرف كان يعمل خطأ المفروض اخليه نفسه خلص الحمد الله انحل المشكل
بارك الله فيك أخي الكريم
شكرا على الشرح المفصل
لما استدعيت الفانكشن لم انتبه اني عملت متغير اخر للisbn لذلك السبب لم يعرف كان يعمل خطأ المفروض اخليه نفسه خلص الحمد الله انحل المشكل