سؤال کد پایتون
در این تمرین، از شما میخواهیم تابعی بنویسید که با دریافت مسیر یک فایل پایتون، تعداد خطوطی از آن را که حاوی دستورات اجرایی هستند، محاسبه کند و بازگرداند.
برای سادگی در این تمرین، فرض میکنیم که خطوط یک فایل پایتون یا شامل دستور اجرایی هستند، یا کامنت هستند، یا خالی هستند. یک خط در صورتی حاوی دستور اجرایی نیست که یکی از شرایط زیر را داشته باشد:
- خطوط خالی: خطی که فقط شامل کاراکترهای Whitespace مانند فاصله ()، تب (\t) یا خط جدید (\n) باشد.
- خطوط کامنت: خطی که پس از حذف کاراکترهای فضای خالی از ابتدای آن، با کاراکتر
#شروع شود.
بنابراین، هر خطی که نه خالی باشد و نه کامنت، بهعنوان خط حاوی دستور اجرایی شمارش خواهد شد.
شما باید تابعی به نام count_executable_lines را تکمیل کنید. این تابع یک ورودی file_path میگیرد، رشتهای که حاوی مسیر نسبی فایل پایتون موردنظر نسبت به فایل main.py است. تابع count_executable_lines باید تعداد خطوط حاوی دستور اجرایی را بهصورت یک عدد صحیح بازگرداند.
🎯 نمونه
نمونهی ۱
a = input()
b = int(a)
print(b * b, a + a)
# This is a comment line.
(فایل: code.py)
خروجی: 3 (سه خط اول حاوی دستور اجرایی هستند و خط چهارم کامنت است.)
نمونهی ۲
a = input()
if a == 1:
b = [1,2,3]
# This is another comment
print("#Mml")
#------ Another comment -----
print(a)
(فایل: code.py)
خروجی: 5 (خطوط ۱، ۲، ۳، ۵ و ۷ حاوی دستور اجرایی هستند، در حالی که خطوط ۴، ۶ و ۸ کامنت یا خالی محسوب میشوند.)
💡 راهنمایی ۱
برای تشخیص خطوط خالی یا کامنت، میتوانید از متد strip() رشتهها استفاده کنید. این متد کاراکترهای Whitespace (شامل \n) را از ابتدا و انتهای رشته حذف میکند. پس از استفاده از strip():
- اگر رشتهی حاصل خالی باشد، خط اصلی یک خط خالی (یا فقط شامل Whitespace) بودهاست.
- اگر رشته حاصل با
#شروع شود، خط اصلی یک خط کامنت بودهاست.
💡 راهنمایی ۲
خطی کامنت است که اولین کاراکتر آن (بدون در نظر گرفتن فاصلهها)
#باشد.مثال: خط زیر دارای کاراکتر
#است، ولی کامنت نیست.
print("#Mokar")
💡 راهنمایی نهایی
ساختار کلی تابع به این شکل است:
def count_executable_lines(file_path):
count = 0
with open(file_path, 'r') as f:
for line in f:
stripped = line.strip()
if stripped and not stripped.startswith('#'):
count += 1
return count
line.strip()← حذف Whitespace از ابتدا و انتهای خطif stripped and not stripped.startswith('#')← اگر خط خالی نباشد و با#شروع نشودcount← شمارش خطوط اجراییreturncount← برگرداندن تعداد
- در این تمرین، نیازی به دریافت ورودی از کاربر یا چاپ خروجی در کنسول ندارید.
- شما فقط باید تابع
count_executable_linesرا پیادهسازی کنید.- ورودی تابع از طریق آرگومان آن دریافت میشود و خروجی تابع باید از طریق دستور
returnبرگردانده شود.- نیازی به فراخوانی تابع در کد ارسالی نیست. سیستم بهطور خودکار تابع شما را با ورودیهای مختلف تست خواهد کرد.
✅ این تمرین را در ویرایشگر خود پیادهسازی کنید. به یاد داشته باشید که تابع باید تعداد خطوط اجرایی را برگرداند.
نمونهها
make_file("code.py", "a = input()\n\nb = int(a)\nprint(b * b, a + a)\n# This is a comment line.\n")
count_executable_lines("code.py")3
make_file("code.py", "a = input()\nif a == 1:\n b = [1,2,3]\n # This is another comment\nprint(\"#Mml\")\n #------ Another comment -----\nprint(a)\n\n")
count_executable_lines("code.py")5
make_file("empty.py", "")
count_executable_lines("empty.py")0
make_file("quiet.py", " \n\t\n# only\n # comments\n\n")
count_executable_lines("quiet.py")0
make_file("src/app.py", "x = 1 # set x\ny = '#'\n\t# tabbed comment\n\tpass\n")
count_executable_lines("src/app.py")3
برای نوشتن پاسخ و دریافت امتیاز، ابتدا وارد حساب شوید.
ورود