برامج صغيرة تجمع القوائم والدوال
تجمع البرامج الحقيقية هذه القطع. النمط هو: قائمة، ثم المرور عليها بحلقة for، ثم استدعاء دالة على كل عنصر، ثم جمع النتائج. في البرنامج الأول تُطبَّق square على كل عدد من [1, 2, 3, 4] وتبني append قائمة جديدة [1, 4, 9, 16]. وفي الثاني passed(mark) اختبار: تعيد True أو False. وتستخدمه الحلقة داخل if، ويزيد عدّاد ١ لكل درجة ناجحة، فللقائمة [45, 72, 50, 38, 90] يكون الجواب ٣ (٧٢ و٥٠ و٩٠). وفي الثالث تجمع average(values) الأعداد في حلقة ثم تقسم على len(values) وتعيد النتيجة، فـ average([4, 8, 6]) تساوي ١٨ ÷ ٣ = 6.0، وهو عدد عشري لأن `/` مستخدمة. وحين لا يعطي البرنامج الجواب المتوقع فتتبعه يدويًا: اكتب المتغيرات في جدول وحدّثها سطرًا بعد سطر. وهذا يكشف أغلب الأخطاء أسرع من التخمين.
1def square(n): 2 return n * n 3 4numbers = [1, 2, 3, 4] 5squares = [] 6for x in numbers: 7 squares.append(square(x)) 8print(squares)
[1, 4, 9, 16]
| x | square(x) | squares بعدها |
|---|---|---|
| 1 | 1 | [1] |
| 2 | 4 | [1, 4] |
| 3 | 9 | [1, 4, 9] |
| 4 | 16 | [1, 4, 9, 16] |
1def passed(mark): 2 return mark >= 50 3 4marks = [45, 72, 50, 38, 90] 5count = 0 6for m in marks: 7 if passed(m): 8 count = count + 1 9print(count)
3
1def average(values): 2 total = 0 3 for v in values: 4 total = total + v 5 return total / len(values) 6 7print(average([4, 8, 6]))
6.0
اكتب على الورق برنامجًا فيه دالة is_even(n) تعيد True حين n % 2 == 0، وقائمة من ستة أعداد، وحلقة تعدّ كم منها زوجي. وتتبعه بالقائمة 3, 8, 5, 6, 10, 7 واكتب النتيجة المطبوعة.