تمارين تجميع النصوص برمجياً
عدّل هذا البرنامج:
name = 'World'
line = ''
for char in name:
line = line + char
print(line)
بحيث يضيف مسافة بعد كل محرف في المثلث، فيصبح الناتج هكذا:
W
W o
W o r
W o r l
W o r l d
ستحتاج إلى استخدام
+مرة إضافية.ستحتاج إلى نص مكوّن من مسافة واحدة:
' '.
رائع! عدّل البرنامج الآن بحيث تكون كل سطر مكتوبًا بالعكس، هكذا:
W
oW
roW
lroW
dlroW
الحل يشبه برنامج المثلث الأصلي جدًا؛ غيّر شيئًا صغيرًا فقط.
ما زلت تضيف محرفًا واحدًا إلى
lineكل مرة؛ المطلوب فقط تحديد أين تضيفه.تريد عكس الأسطر، إذن عليك عكس شيء ما.
أضف المحرف قبل النص بدلًا من إضافته بعده.
3 + 7تساوي7 + 3، وهذا صحيح مع كل الأعداد. هل ينطبق الأمر نفسه على النصوص؟
ممتاز!
الكود من الشكل:
line = line + char
شائع جدًا، لذلك يسمح بايثون بكتابته بصورة مختصرة. السطر التالي يعني الشيء نفسه:
line += char
لاحظ أنه لا توجد صيغة مختصرة مماثلة للسطر line = char + line.
استخدم الآن += مع حلقة for لكتابة برنامج يطبع name وتحته خط، هكذا:
World
-----
يجب أن توجد شرطة - واحدة مقابل كل محرف في name.
استعن ببرنامج المثلث.
استعن بالبرنامج الذي طبعت فيه
nameمرة لكل محرف.ستحتاج إلى بناء نص من الشرطات (
-) محرفًا بعد محرف.ستنشئ حلقة
forمتغيرًا مثلchar، لكن البرنامج لا يحتاج إلى استخدامه.
ممتاز جدًا!
وبالمناسبة، عندما لا تحتاج إلى استخدام متغير معين، فمن المعتاد تسمية ذلك المتغير _، مثل for _ in name:. هذا لا يغير طريقة تنفيذ البرنامج، لكنه يوضح للقارئ أنك لا تحتاج إلى قيمة المتغير.
لنجعل البرنامج أكثر أناقة. وسّعه بحيث يرسم صندوقًا حول الاسم، هكذا:
+-----+
|World|
+-----+
أنجزت الجزء الصعب في التمرين السابق. المتبقي مجرد دمج بسيط للنصوص.
تحتاج إلى حلقة
forواحدة فقط: الحلقة التي استخدمتها لصنع سطر الشرطات في التمرين السابق.لا تحاول حل كل شيء دفعة واحدة. قسّم المسألة إلى أجزاء أصغر وأسهل.
بما أنك ستطبع ثلاثة أسطر منفصلة، فستحتاج إلى استدعاء
print()ثلاث مرات.
أصبحت جيدًا في هذا! حان وقت تحدٍّ أصعب قليلًا. بدل أن نضع الاسم داخل صندوق، اجعل الاسم نفسه جزءًا من الصندوق. اكتب برنامجًا ينتج:
+World+
W W
o o
r r
l l
d d
+World+
ستحتاج إلى حلقتي
forمنفصلتين تمران علىname.كل سطر، ما عدا الأول والأخير، يحتوي المحارف نفسها في المنتصف. يمكنك إعادة استخدام شيء واحد.
أنشئ متغيرًا يحتوي على المسافات الوسطى واستخدمه أكثر من مرة.
استخدم حلقة لبناء المسافات، ثم حلقة ثانية لطباعة الأسطر باستخدام تلك المسافات.
أحسنت! أصبحت الفكرة واضحة لديك بالفعل.
إذا أردت، يمكنك حل تحدٍّ إضافي اختياري أدناه. وإذا لم ترغب الآن، يمكنك الانتقال إلى الدرس التالي والعودة إلى هذا التحدي لاحقًا.
حاول كتابة برنامج يطبع name في خط قطري، مثل:
W
o
r
l
d
يجب أن يسبق الحرف الأول 0 مسافات، والثاني مسافة واحدة، والثالث مسافتان، وهكذا.
احتفظ بالمسافات في متغير وابنها تدريجيًا داخل الحلقة كما فعلت من قبل.
الفرق أنك تحتاج إلى طباعة الحروف أثناء بناء المسافات.
أي أنك تحتاج إلى حلقة واحدة تفعل الأمرين معًا.
جسم الحلقة يجب أن يطبع المسافات والحرف، ويضيف مسافة أيضًا.
لأن الحرف الأول لا يسبقه أي مسافة، أضف المسافة بعد طباعة الحرف.
ممتاز جدًا! استمر بهذا المستوى.