اذهب إلى المحتوى
  • 1

مشكلة باستخدام دوال بايثون - حساب مجموع أكبر 3 أرقام في مصفوفة

ضياء الجمل

السؤال

 دالة يمكن تمرير قيمة لها هذه القيمة عبارة مصفوفة من الاعداد الصحيحة ثم تقوم بإرجاع مجموع أكبر ثلاث اعداد بالمصفوفة. قم باستخدام التعريف التالي للدالة :

def sumMaxThree(list) :

مثال: عند استدعاء الدالة بالشكل التالي: sumMaxThree([10,21,3,8,9,11,44,62,100]) فانها تقوم بارجاع العدد 206.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • -1

أولا يمكننا ترتيب المصفوفة ومن ثم حساب مجموع مجال محدد ضمنها، كما الشيفرة التالية:

def Max3Sum(arr):

  arr_sorted = sorted(arr)  	# [1, 2, 3, 4, 5]

  return  sum(arr_sorted[-3:])  # -3 لنجمع آخر العناصر و التي تكون قيمتها الأكبر بعد الترتيب التصاعدي

print(Max3Sum([5,2,4,3,1]))
  • نعمل نسخة مرتة من المصفوفة و نجمع آخر X عنصر (يمكن تمرير وسيط لتحديد عدد الأعداد التي نريد جمعها لتصبح الدالة ديناميكية أكثر)
def MaXSum(arr, X):

  arr_sorted = sorted(arr)  	# [1, 2, 3, 4, 5]

  return  sum(arr_sorted[-X:])  # -X لنجمع آخر العناصر و التي تكون قيمتها الأكبر بعد الترتيب التصاعدي

print(MaxXSum([5,2,4,3,1], X))

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

أولا يجب أن نحدد أكبر ثلاثة أرقام من ضمن قائمة الأرقام المدخلة للدالة sumMaxThree ويمكن فعل ذلك بإستخدام الدالة max التي ترجع أكبر رقم من قائمة أرقام مدخلة

print(max([0,5,32,6,8,1,100]))	# Output: 100

ثم سنضيف قيمة هذا الرقم إلى متغير باسم sum_numbers ونقوم بحذف الرقم من القائمة بأستخدام التابع list.remove:

nums = [1,2,3,4,5,6,1,2,3]
nums.remove(3)
print(nums)	# Output: [1, 2, 4, 5, 6, 1, 2, 3]

وسنقوم بتكرار العملية السابقة ثلاث مرات داخل الدالة sumMaxThree وفي النهاية نقوم بإرجاع إجمالي الأرقام الثالثة (المتغير sum_numbers)

# قائمة الأرقام
numbers = [10,21,3,8,9,11,44,62,100]

def sumMaxThree(nums):
  sum_numbers = 0
  
  # نقوم بتكرار العملية التالية 3 مرات
  for _ in range(0, 3):
    # نستخرج أكبر رقم في القائمة
    largest = max(nums)
    
    # نضيف الرقم إلى المتغير sum_numbers
    sum_numbers += largest
    
    # نحذف الرقم من القائمة حتى لا يتكرر بعد ذلك
    nums.remove(largest)
  
  return sum_numbers

print(sumMaxThree(numbers))	#Output: 206

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...