محمد وليد الريحاوي النصر نشر 5 سبتمبر 2023 أرسل تقرير نشر 5 سبتمبر 2023 الكود تبع الارقام بهذا الشكل 1 23 456 كتبته نفسه ولكن كتب الارقام عموديا وليس على شكل مثلث 1 اقتباس
0 Adnane Kadri نشر 5 سبتمبر 2023 أرسل تقرير نشر 5 سبتمبر 2023 هذا بسبب اختلاف المسافات البادئة في الشيفرة التي لديك وتلك لدى صاحب المثال المرفق، فالمسافات البادئة في بايثون مهمة وتحدد مختلف الكتل ومستواها، أصلح ذلك ليكون: num = 1 for i in range(0,4): for j in range(0, i +1): print(num, end = ' ') num+=1 print() وليس: num = 1 for i in range(0,4): for j in range(0, i +1): print(num, end = ' ') num+=1 print() اقتباس
0 Mustafa Suleiman نشر 5 سبتمبر 2023 أرسل تقرير نشر 5 سبتمبر 2023 لديك مشكلة في استخدام دالة print() حيث تم وضع print() داخل الحلقة الداخلية for j in range(0, i +1)، مما يجعلها تقوم بالطباعة في كل دورة داخل الحلقة الخارجية for i in range(0,4). وعليك وضع print() خارج الحلقة الداخلية لتتم الطباعة بعد انتهاء الحلقة الداخلية، وبالتالي طباعة الأرقام بشكل صحيح وفقًا للشكل الهرمي المطلوب. ويمكن كتابة الكود بشكل أفضل من خلال استخدام متغير rows لتحديد عدد الصفوف المطلوبة في الهرم، مما يجعل من السهل تغيير عدد الصفوف إذا كنت بحاجة إلى ذلك، كما يقلل من استخدام الأرقام السحرية (مثل العدد 4 في range(4))، مما يجعله أكثر قابلية للصيانة والتعديل. num = 1 rows = 4 for i in range(rows): for j in range(i + 1): print(num, end=' ') num += 1 print() اقتباس
0 عبدالباسط ابراهيم نشر 5 سبتمبر 2023 أرسل تقرير نشر 5 سبتمبر 2023 يمكنك تعديل الكود ليعمل بشكل صحيح كما يلي: num = 1 for i in range(0, 4): for j in range(0, i + 1): print(num, end=' ') num += 1 print() هذا الكود سيقوم بطباعة الأرقام بشكل مثلثي تصاعدي كما تم توضيحه في النمط الذي ذكرته: 1 //للإنتقال للسطر الجديد print() الداخلية وسيتم استدعاء loop انتهى تنفيذ ال 2 3 //للإنتقال للسطر الجديد print() الداخلية وسيتم استدعاء loop انتهى تنفيذ ال 4 5 6 //نفس الخطوة 7 8 9 10 //نفس الخطوة المتغير "num" يبدأ من القيمة 1 ويتزايد بمقدار واحد في كل تكرار داخل الحلقة الداخلية، ويتم طباعة قيمة "num" مع استخدام الـ "print()" ونهاية السطر (end=' ') لعرض الأرقام على نفس السطر، ثم يتم طباعة سطر فارغ باستخدام "print()" خارج الحلقة الداخلية للانتقال إلى السطر التالي. تلخيصاً للشرح السابق وجود print() خارج سياق ال loop الثانية يجعلها تقوم بإضافة سطر جديد بعد الإنتهاء من تنفيذ ال loop الداخلية اقتباس
0 Kais Hasan نشر 5 سبتمبر 2023 أرسل تقرير نشر 5 سبتمبر 2023 هناك طريقة أفضل لكتابة هذا الكود بما يتوافق مع النمط العام في بايثون أو الكود الذي يطلق عليه Pythonic. الكود الخاص بك يمكن كتابته بحيث يقوم بطباعة كل سطر بتعليمة واحدة فقط بدلاً من استعمال حلقة، بالطبع يجب علينا استعمال حلقة للأسطر و لكن عندها سنكون اختصرنا حلقة. يمكن كتابة ذلك كما يلي: num = 1 for i in range(3): row = map(lambda x: str(x), range(num, num + i + 1)) num += i + 1 print(' '.join(row)) قد تبدو هذه الطريقة معقدة بالنسبة للأشخاص الذين تعلموا لغات برمجة أخرى مسبقاً، حيث أن أغلب اللغات تعتمد على الشكل التقليدي، و لكن في بايثون هذه الطريقة أفضل بكثير. لاحظ هنا كيف أننا استعملنا map و التي تقوم بتطبيق تابع معين على كل عنصر من عناصر كائن قابل للتكرار، بشكل أساسي الهدف من map هنا هو تحويل الأرقام إلى سلسلة نصية بحيث يمكننا دمجهم لاحقاً. لاحظ كيف أننا استعملنا range لاستبدال الحلقة بشكل كامل، فهي ببساطة ستعيد لنا كافة الأرقام التي نريدها. و استعملنا التابع join على الفراغ و ذلك لجمع عناصر السطر عن طريق وضع فراغ بينهم. اقتباس
السؤال
محمد وليد الريحاوي النصر
الكود تبع الارقام بهذا الشكل
1
23
456
كتبته نفسه ولكن كتب الارقام عموديا وليس على شكل مثلث
4 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.