✍️ حالا خطهایی را میخواهیم که بعد از حذف فاصلههای دو سر واقعاً محتوا دارند. این تعریف با «طول خط قبل از پاکسازی بیشتر از صفر» فرق دارد؛ خطی با چهار فاصله از نظر تعداد نویسه خالی نیست، اما از نظر این مسئله هیچ رکوردی ندارد. پس ترتیب دو کار مهم است: پاکسازی، سپس تصمیم.
مثلاً متن شامل « دفتر »، یک خط فقطفاصله و «مداد» باید دو رکورد مفید بدهد. در این فعالیت فقط تعداد را میخواهیم، نه خود متنهای پاکشده. فایل نمونه از آرگومان ساخته میشود و همان لحظه خوانده میشود؛ تابع به فایل آماده یا تمرین قبلی وابسته نیست.
بخش ناقص حلقه را کامل کن. splitlines خطها را میدهد و line.strip() تشخیص محتوای واقعی را آسان میکند. متن خالی یا فقط خط خالی نتیجه صفر دارد؛ آخرین پایان خط بهتنهایی رکورد اضافه نمیکند. خطای رایج، استفاده از if line پیش از strip است؛ چنین شرطی رشته شامل فاصله را True میبیند. شمارنده را هم از صفر شروع کن تا در نبود هیچ خط معتبر، نتیجه درست بماند.
فعالیت شما
تابع count_nonempty_lines(text) رشته را در فایل موقت UTF-8 بنویسد و دوباره بخواند؛ تعداد خطهایی را بدهد که پس از strip خالی نیستند. پایان خط نهایی رکورد اضافه نیست؛ خط فقطفاصله نادیده گرفته شود. خالی 0؛ count_nonempty_lines(' دفتر \n \nمداد\n')=2. به هیچ فایل از قبل نیاز نباشد.