شارك المقالة

تمارين الحلقات في Python تساعدك على تحديد بداية التكرار ونهايته وما تجمعه خلاله. سنختبر العدد المثالي ونطبع مثلثًا من النجوم باستخدام دوال تعيد نتائج واضحة. العدد المثالي هنا يساوي مجموع قواسمه الموجبة الأصغر منه، مثل 6 التي قواسمها 1 و2 و3. لا نستخدم عنوانًا يعد بالاحتراف من أمثلة قليلة؛ الهدف تدريب على صياغة شرط وحلقة وحالات حدود يمكن التحقق منها يدويًا.

التجهيز والتشغيل

استخدم Python 3.9 أو أحدث واحفظ المثال في ملف مستقل خارج مجلد مكتبات Python.

python lesson_25549.py

القواسم الصحيحة لا تشمل العدد نفسه

إذا جمعت جميع القواسم بما فيها العدد فستغير تعريف المسألة. تعيد proper_divisors قائمة فارغة للعدد واحد، وتبدأ القواسم بواحد للأعداد الأكبر. نرفض الصفر والسالب والقيم غير الصحيحة لأن عقد الدالة يطلب عددًا صحيحًا موجبًا. بهذا لا يتحول الصفر إلى عدد مثالي بالخطأ لأن مجموع قائمة فارغة يساوي صفرًا. افصل التحقق من المدخل عن قرار is_perfect الذي يقارن المجموع بالعدد.

استعمال أزواج القواسم حتى الجذر

إذا قسم candidate العدد دون باق، فإن number // candidate قاسم أيضًا. لذلك نبحث حتى isqrt(number) بدل المرور إلى العدد كله. نستخدم مجموعة كي لا يتكرر جذر العدد المربع مرتين، ثم نرتبها للعرض. لا نخلط القسمة العشرية بالقسمة الصحيحة عند استخراج القاسم المقابل. هذه طريقة أوضح وأقل تكرارًا من إضافة القيمة نفسها مرتين ثم محاولة إصلاح المجموع بعد انتهاء الحلقة.

المثال البرمجي الكامل

from math import isqrt

def proper_divisors(number):
    if type(number) is not int or number <= 0:
        raise ValueError("Use a positive integer")
    if number == 1:
        return []
    divisors = {1}
    for candidate in range(2, isqrt(number) + 1):
        if number % candidate == 0:
            divisors.add(candidate)
            divisors.add(number // candidate)
    return sorted(divisors)

def is_perfect(number):
    return sum(proper_divisors(number)) == number

def triangle(rows, symbol="*"):
    if type(rows) is not int or not 0 <= rows <= 40:
        raise ValueError("Use 0 to 40 rows for this display example")
    return "\n".join(symbol * count for count in range(1, rows + 1))

if __name__ == "__main__":
    for number in [1, 6, 12, 28]:
        print(number, proper_divisors(number), is_perfect(number))
    print(triangle(4))

اختبار الأعداد المثالية المعروفة

تعطي 6 و28 نتيجة صحيحة، بينما 1 و12 ليستا مثاليتين. يمكن تجربة 496 أيضًا، مع مراجعة قائمة القواسم ومجموعها. لا تختبر الدالة على مثال موجب واحد فقط؛ قد يكون شرط مقلوب أو جمع غير صحيح قادرًا على النجاح مصادفة. عند المقارنة بتطبيق بسيط يمر على كل الأعداد الأصغر، اجعل المجال صغيرًا حتى تستطيع مراجعة النتائج وفهم سبب أي اختلاف.

طباعة المثلث وفصل العرض عن الحساب

تعيد triangle سلسلة تحتوي سطرًا بطول واحد ثم اثنين حتى عدد الصفوف، وتجمعها بمحرف newline. الصفر يعطي نصًا فارغًا، ونضع حدًا أقصى أربعين صفًا في مثال العرض حتى لا تتحول تجربة إلى ناتج ضخم غير مقصود. يمكن تمرير رمز آخر بدل النجمة، لكن الرمز متعدد المحارف سيضاعف طول كل وحدة عرض. عدد مرات التكرار ليس بالضرورة عدد الأعمدة المرئية عند استخدام رموز مركبة.

range ونهاية المجال

range(1, rows + 1) يشمل العدد rows لأن النهاية نفسها غير مشمولة. أما فهارس القوائم فتبدأ من صفر، لذا لا تخلط قاعدة ترقيم الصفوف المطبوعة بفهرس عنصر داخل قائمة. عند ظهور سطر ناقص أو زائد، اكتب أول وآخر قيمة تنتجهما range قبل تغيير أكثر من شرط. هذه المراجعة الصغيرة تكشف معظم أخطاء الحدود وتفيد في مسائل أخرى مثل المضروب وتجميع عناصر الصفوف.

أمثلة عامة ليست نظام تسجيل دخول

قد تعرض بعض مجموعات الأكواد شرطًا يقارن اسمًا وكلمة مرور ثابتة، لكن ذلك ليس تطبيق مصادقة مناسبًا. أبق تمارين الشروط هنا مرتبطة بمدخلات وحسابات واضحة، واستعمل نظام مصادقة موثوقًا عندما يبني مشروعك حسابات فعلية. كذلك عد كلمة داخل نص مسألة مختلفة عن العدد المثالي؛ ستجد لها درسًا مستقلًا يميز الكلمة عن الجزء النصي بدل تجميع خوارزميات غير مترابطة تحت عنوان واحد.

تمارين إضافية وحدودها

اطبع القواسم للعدد 36 وتأكد أن الستة تظهر مرة واحدة، ثم جرّب عددًا أوليًا ولاحظ أن القاسم الصحيح الوحيد هو واحد. اختبر rows بقيمة سالبة أو أكبر من الحد لتفهم رسائل الرفض، وغيّر رمز المثلث إلى حرف واحد. يمكنك إضافة دالة تعيد جميع الأعداد المثالية داخل مجال صغير، مع تجنب تشغيل بحث ضخم دون تقدير الزمن. حافظ على أسماء مثل total وdivisors بدل حجب sum وlist، وافصل الدالة التي تحسب عن الحلقة التي تعرض النتائج.

المراجع

الحلقات والتحكم في Python

الصور والفيديو من الشرح السابق

الكود النصي أعلاه هو النسخة المصححة؛ قد تختلف المواد المرئية السابقة في أسماء المتغيرات أو طريقة التشغيل.

كود بايثون لمعرفة العدد المثالي perfect number طباعة هرم من الدوائر باستخدام لعة بايثون ! معرفة عدد تكرار كلمة معينه باستخدام لغة بايثون ! معرفة اسم الحساب وكلمة المرور في شركات الانترنت باستخدام لغة بايثون ! كود برنامج بلغة بايثون لمعرفة مرحلة السن !
شاهد أيضًا
مقالات ذات صلة
🚫 مانع الإعلانات مفعل

يجب إيقاف مانع الإعلانات لاستكمال تصفح الموقع