في السياق البرمجي الذي قدمته، يظهر أنك تقوم بحساب مجموع قيم معينة باستخدام دالة myFunction
، ولكن الناتج الذي تحصل عليه هو None
بدلاً من القيم المتوقعة. لفهم السبب وكيفية استرجاع القيم الصحيحة، يجب التركيز على الكود وتحليل الخطوات.
أولاً وقبل كل شيء، يبدو أن هناك خطأ في دالة myFunction
حيث أنها لا تقوم بإرجاع قيمة. لتصحيح ذلك، يجب أن تضيف عبارة return
لترجيع قيمة الناتج من العملية. في الحالة الحالية، الدالة تقوم بحساب قيمة math.exp(x)/sum
، ولكن يجب أن يكون هناك عبارة return
قبل هذه العملية لإرجاع الناتج.
ثانيًا، يمكنك تحسين الكود بتبسيط عملية حساب المجموع باستخدام حلقة for
بدون الحاجة لاستخدام متغير i
أو j
. فيما يلي نسخة من الكود المعدل:
pythonimport math
scores = [3.0, 1.0, 0.1]
total_sum = sum(math.exp(x) for x in scores)
def myFunction(x):
return math.exp(x) / total_sum
result = [myFunction(x) for x in scores]
print(result)
في هذا الكود، تم استخدام التعبير الجديد total_sum
لحساب مجموع math.exp(x)
بدون الحاجة لاستخدام متغير فرعي. وتم تعديل دالة myFunction
لترجيع القيمة بواسطة return
. الناتج النهائي هو قائمة result
التي تحتوي على القيم الصحيحة لكل عنصر في scores
.
المزيد من المعلومات
بالتأكيد، دعوني أوسع في شرح المزيد من المعلومات حول الكود المقدم والتحسينات التي تم إجراؤها.
في الكود الأصلي، قمت بتعريف قائمة scores
التي تحتوي على قيم نقاط معينة، ثم قمت بحساب مجموع مقدار math.exp(x)
لكل عنصر في هذه القائمة باستخدام حلقة for
وتخزين الناتج في المتغير sum
. ومن ثم، قمت بتعريف دالة myFunction
التي تقوم بحساب math.exp(x)/sum
لكل عنصر في القائمة، لكن نسيت إضافة عبارة return
لإرجاع الناتج.
في التعديل الذي قدمته، تم تصحيح هذا الخطأ وتبسيط الكود باستخدام التعبير الجديد total_sum
، الذي يقوم بحساب مجموع math.exp(x)
بشكل أكثر فعالية. تم أيضًا استخدام قائمة التفهم (list comprehension) لإنشاء قائمة result
التي تحتوي على القيم الصحيحة لكل عنصر في scores
.
بهذه الطريقة، يمكنك الآن الحصول على القيم الصحيحة لكل عنصر في القائمة scores
باستخدام قائمة result
، ويتم ذلك بشكل أكثر فعالية ووضوح في الكود.