میخواهیم برنامهای بنویسیم تا بتوانیم با فایل نمرات دانشجویان کار کرده
و کارهایی که پیش از این توسط مسئولین آموزش به صورت دستی بر روی این فایلها
انجام میشد را خودکار کنیم. هر سطر از این فایل دارای سه بخش است که با
کاراکتر فاصله (" "
) از هم جدا شدهاند. این سه بخش به ترتیب عبارتند از:
یعنی هر سطر از این فایل مشخص میکند که یک دانشجو در یک درس چه نمرهای را گرفته است.
چند نیاز اساسی در رابطه با این فایلها وجود دارد:
Grade
بخوانیم.Grade
را به صورت یک سطر از فایل نمرات و در انتهای فایل ذخیره کنیم.یک کلاس به نام Grade
شامل سه خصوصیت با اسامی زیر بنویسید.
student_id
course_code
score
کلاس شما باید دارای متد سازندهای باشد که این سه خصوصیت را به همین ترتیب دریافت و مقداردهی کند.
این کلاس در فایل پروژه اولیه تکمیل شده است و شما باید تنها کلاس CourseUtil
را تکمیل کنید.
با توجه به نیازمندیهایی که در بالا گفته شد، یک کلاس با نام CourseUtil
تعریف کنید که همه متدهای جدول زیر را طبق رفتار توضیح داده شده پیادهسازی کند.
رفتار | خروجی | متد |
---|---|---|
آدرس فایل نمرات به ورودی این متد داده میشود. | - |
set_file(address) |
یک شماره خط از فایل را در ورودی میگیرد و اطلاعات موجود در آن خط از فایل را در قالب یک شئ Grade برمیگرداند. |
Grade |
load(line_number) |
یک شئ Grade در ورودی میگیرد و طبق فرمت مورد نظر، آن را در انتهای فایل اضافه میکند. |
- |
save(grade) |
میانگین نمرات دانشجویان در درس با کد course_code را برمیگرداند. |
float |
calc_course_average(course_code) |
میانگین نمرات دانشجو با شماره دانشجویی student_id در درسهای مختلف را برمیگرداند. |
float |
calc_student_average(student_id) |
تعداد کل نمرات موجود در فایل نمرات را برمیگرداند. | int |
count() |
set_file
در اختیار کلاس قرار داده میشود. شما باید خودتان فایل را به نحوه دلخواه باز کنید.load
اگر مقدار line_number
بزرگتر از تعداد خطهای فایل بود، باید None
برگردانید. شمارهی خطوط از ۱ شروع میشود.set_file
ممکن است چند بار فراخوانی شود که پس از هر فراخوانی، اطلاعات فایل جدید باید خوانده شود.save
ثبت کنیم، نباید در فایل تغییری ایجاد شود.\n
وجود ندارد. شما نیز باید طوری فایل را تغییر دهید که هیچ گاه در انتهای فایل \n
وجود نداشته باشد.در کد زیر یک فایل شامل دو سطر به عنوان ورودی داده شده است.
return
کنید.شما باید کلاس CourseUtil
موجود در فایل source.py
را تکمیل و سپس این فایل را ارسال کنید.
منبع سؤال: مسابقات جاواکاپ