1

Тема: Допоможіть, будь ласка

Розробити клас для представлення відомостей про успішність студента. Об'єкт класу має містити поля для збереження імені студента та балів, отриманих ним за виконання лабораторних робіт та індивідуального творчого завдання.
Забезпечити наступні методи класу: конструктор, який приймає рядок ім'я студента та словник, що містить налаштування курсу у наступному форматі: 1) максимально можлива кількість балів за здачу індивідуального творчого завдання; 2) максимально можлива кількість балів за здачу однієї лабораторної роботи; 3) кількість лабораторних робіт в курсі; метод, за допомогою якого вносяться оцінки за лабораторну роботу, яий приймає параметри оцінку та номер лабораторної роботи; метод, за допомогою якого вносяться дані про оцінку за індивідуальне творче завдання; метод, який повертає дійсне число (суму балів студента за проходження курсу).
False
False
Не можу знайти помилки.

class Student:
    def __init__(self, name, settings):
        self.name = name
        self.settings = settings
        self.labs = [0.0]*(settings['lab_num'])
        self.exam = 0.0
        
    def make_lab(self, m, n = None):
        if(n == None):
            for i in range(self.settings['lab_num']):
                if(self.labs[i] == 0):
                    n = i
                    break
        if(n >= self.settings['lab_num']):
            return self
        
        if(m > self.settings['lab_max']):
            m = self.settings['lab_max']
        
        self.labs[n] = m

        return self
    
    def make_exam(self, m):
        if(m >= self.settings['exam_max']):
            m = self.settings['exam_max']
            self.exam = m
            return self
        
        self.exam = m
        return self
    
    def is_certified(self):
        marks = 0.0
        course_max = self.settings['exam_max'] + self.settings['lab_max'] * self.settings['lab_num']
        for mark in self.labs:
            marks += mark    
            
        marks += self.exam

        if(float(marks)/float(course_max) < self.settings['k']):
            return (marks, False)
        else:
            return (marks, True)
        



conf = {
 'exam_max': 40,
 'lab_max': 6,
 'lab_num': 10,
 'k': 0.60,
 }


oleg = Student('Oleg', conf)
oleg.make_lab(6,1)
oleg.make_lab(6,2)
oleg.make_lab(6,3)
oleg.make_lab(6,4)
oleg.make_lab(3,5)
oleg.make_lab(2,6)
oleg.make_lab(1,7)
oleg.make_lab(1,8)
oleg.make_lab(1,9)
oleg.make_lab(1,10)
oleg.make_exam(40)
print(oleg.is_certified() == (59.5, False))

print(oleg.is_certified() == (62.5, True))

2 Востаннє редагувалося koala (27.04.2020 18:01:26)

Re: Допоможіть, будь ласка

А чому ви вирішили, що там 62.5 має виходити? Я особливих проблем у коді не бачу, ви просто собі нафантазували проблему. От просто подумайте - яким чином сума цілих може бути 62.5?

Ну і принагідно: "дуже потрібно", "терміново", порушення правил - це все працює проти вас. Це для вас воно терміново і дуже потрібно, а з мого боку це виглядає як дешева спроба маніпуляції. Не робіть так більше - принаймні, якщо не збираєтеся за терміновість платити.

3

Re: Допоможіть, будь ласка

Підкажіть, будь ласка, як можна зробити?

4

Re: Допоможіть, будь ласка

chubayn292 написав:

Підкажіть, будь ласка, як можна зробити?

Зробити, вибачте, ЩО? От так, як ви зробили, і треба. Можна дещо спростити і покращити, але я б зарахував.

5

Re: Допоможіть, будь ласка

Будь ласка, допоможіть спрости і покращити)

6

Re: Допоможіть, будь ласка

offtop
koala написав:

... Можна дещо спростити і покращити, але я б зарахував.

От я так і думав що ви викладач.

7

Re: Допоможіть, будь ласка

Недописав: ...якби був викладачем :)