راه
۶ کیو· متوسطمتوسطPYTHON۴ ثانیه · ۲۵۶ مگابایت

سؤال کد پایتون

در این تمرین، از شما می‌خواهیم تابعی بنویسید که با دریافت مسیر یک فایل پایتون، تعداد خطوطی از آن را که حاوی دستورات اجرایی هستند، محاسبه کند و بازگرداند.

برای سادگی در این تمرین، فرض می‌کنیم که خطوط یک فایل پایتون یا شامل دستور اجرایی هستند، یا کامنت هستند، یا خالی هستند. یک خط در صورتی حاوی دستور اجرایی نیست که یکی از شرایط زیر را داشته باشد:

  • خطوط خالی: خطی که فقط شامل کاراکترهای Whitespace مانند فاصله ()، تب (\t) یا خط جدید (\n) باشد.
  • خطوط کامنت: خطی که پس از حذف کاراکترهای فضای خالی از ابتدای آن، با کاراکتر # شروع شود.

بنابراین، هر خطی که نه خالی باشد و نه کامنت، به‌عنوان خط حاوی دستور اجرایی شمارش خواهد شد.

شما باید تابعی به نام count_executable_lines را تکمیل کنید. این تابع یک ورودی file_path می‌گیرد، رشته‌ای که حاوی مسیر نسبی فایل پایتون موردنظر نسبت به فایل main.py است. تابع count_executable_lines باید تعداد خطوط حاوی دستور اجرایی را به‌صورت یک عدد صحیح بازگرداند.


🎯 نمونه

نمونه‌ی ۱

text
a = input()

b = int(a)
print(b * b, a + a)
# This is a comment line.

(فایل: code.py)

خروجی: 3 (سه خط اول حاوی دستور اجرایی هستند و خط چهارم کامنت است.)

نمونه‌ی ۲

text
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) بوده‌است.
  • اگر رشته حاصل با # شروع شود، خط اصلی یک خط کامنت بوده‌است.

💡 راهنمایی ۲

خطی کامنت است که اولین کاراکتر آن (بدون در نظر گرفتن فاصله‌ها) # باشد.

مثال: خط زیر دارای کاراکتر # است، ولی کامنت نیست.

python
print("#Mokar")

💡 راهنمایی نهایی

ساختار کلی تابع به این شکل است:

python
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 ← شمارش خطوط اجرایی
  • return count ← برگرداندن تعداد
  • در این تمرین، نیازی به دریافت ورودی از کاربر یا چاپ خروجی در کنسول ندارید.
  • شما فقط باید تابع 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

برای نوشتن پاسخ و دریافت امتیاز، ابتدا وارد حساب شوید.

ورود