Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/55: Рейтинг темы: голосов - 55, средняя оценка - 4.87
0 / 0 / 0
Регистрация: 13.11.2013
Сообщений: 33

Задача по классам

22.12.2015, 18:08. Показов 10539. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите разобраться.
Разработать класс Student для представления сведений об успешности слушателя курса Prometheus. Объект класса должен содержать поля для сохранения имени студента и баллов, полученных им за выполнение практических заданий и финального экзамена.

Обеспечить следующие методы класса:

конструктор, принимающий строку - имя студента - и словарь, содержащий настройки курса в следующем формате:
conf = {
"exam_max": 30 # количество баллов, доступная за сдачу экзамена
"lab_max '7, # количество баллов, доступная за выполнение 1 практической работы
"lab_num": 10 # количество практических работ в курсе
'k': 0.61, # доля баллов от максимума, которую необходимо набрать для получения сертификата
}.
метод make_lab (m, n), который принимает 2 аргумента и возвращает ссылку на текущий объект. Здесь m - количество баллов набрано за выполнение задания (целое или действительное число), а n - целое неотрицательное число, порядковый номер задания (лапы нумеруются от 0 до lab_num-1). При повторной сдаче задачи засчитывается последняя оценка. Если n не задано, подразумевается сдача первого невыполненного практического задания. Учесть, что во время тестирования система иногда дает сбои, поэтому за выполнение задания может быть начислено больше баллов чем это возможно по правилам курса, не должно влиять на рейтинг студента. Кроме того, в системе могут содержаться дополнительные задачи, чьи номера выходят за пределы 0..lab_num - конечно, баллы за них не должны засчитываться для получения сертификата.
метод make_exam (m), который принимает 1 аргумент - целое или действительное число, оценку за финальный экзамен, и возвращает ссылку на текущий объект. Как и в случае с практическими задачами, оценка за экзамен в результате ошибки иногда может превышать максимально допустимую.
метод is_certified (), который возвращает тьюпл, содержащий действительное число (сумму баллов студента за прохождение курса), и логическое значение True или False в зависимости от того, достаточно ли этих баллов для получения сертификата.

Так как курс доступен онлайн и не имеет дедлайнов на сдачу работ, студент может выполнять работы в произвольном порядке. Считать, что количество попыток на выполнение каждого из заданий ограничено.

Пример последовательности действий для тестирования класса:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
conf = {
'exam_max': 30,
'lab_max': 7,
'lab_num': 10,
'k': 0.61,
}
oleg = Student('Oleg', conf)
oleg.make_lab(1) \ # labs: 1 0 0 0 0 0 0 0 0 0, exam: 0
.make_lab(8,0) \ # labs: 7 0 0 0 0 0 0 0 0 0, exam: 0
.make_lab(1) \ # labs: 7 1 0 0 0 0 0 0 0 0, exam: 0
.make_lab(10,7) \ # labs: 7 1 0 0 0 0 0 7 0 0, exam: 0
.make_lab(4,1) \ # labs: 7 4 0 0 0 0 0 7 0 0, exam: 0
.make_lab(5) \ # labs: 7 4 5 0 0 0 0 7 0 0, exam: 0
.make_lab(6.5) \ # labs: 7 4 5 6.5 0 0 0 7 0 0, exam: 0
.make_exam(32) # labs: 7 4 5 6.5 0 0 0 7 0 0, exam: 30
print oleg.is_certified() # (59.5, False)
oleg.make_lab(7,1) # labs: 7 7 5 6.5 0 0 0 7 0 0, exam: 30
print oleg.is_certified() # (62.5, True)
Я набросал код но он неправильно работает. Немогу понять почему.
Вот мой код:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
class Student():
    name = None
    config = None
    marks = None
    def __init__(self, name, config):
        self.name = name
        self.config = config
        self.marks = {}
        for i in range(1, self.config['lab_num'] + 1):  # словарь с оценками
            self.marks[i] = 0
    def make_lab(self, m, n):
        if n <= self.config['lab_num']:  # проверяем не вышли ли за предел к-ства лаб
            if float(m) > float(self.config['lab_max']):  # если оценка больше заданой, то присваиваем макс значению
                self.marks[n] = self.config['lab_max']
            else:
                self.marks[n] = m  # если нет, то берем наше значение
        # print(self.marks)
        return self  # ссылка на наш обьект
    def make_exam(self, m):
        if m > self.config['exam_max']:  # если оценка больше заданой, дальше понятно крч
            self.marks['exam'] = self.config['exam_max']
            print(self.config['exam_max'])
        else:
            self.marks['exam'] = m
        # print(self.marks)
        return self
    def is_certified(self):
        if sum(self.marks.values()) >= self.config['k']*100:  # тут тоже все понятно
            print(sum(self.marks.values()), True)
        else:
            print(sum(self.marks.values()), False)
Ошибка:
oleg.make_lab(1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: make_lab() takes exactly 3 arguments (2 given)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.12.2015, 18:08
Ответы с готовыми решениями:

Задача по классам
Здравствуйте, дано задание. Помогите с решением. Нужно создать класс Text для работы с текстом. У этого класса должны быть атрибуты...

задача по пайгейм и классам
import math import pygame from pygame.locals import * f = open('11.txt', 'r') window = pygame.display.set_mode((600,...

Задача на сортировку, Вывести список школьников по классам
Входные данные В каждой строке сначала записан номер класса (число, равное 9, 10 или 11), затем (через пробел) — фамилия ученика. ...

4
19 / 10 / 6
Регистрация: 28.05.2014
Сообщений: 140
23.12.2015, 00:05
Кликните здесь для просмотра всего текста
Python
1
2
3
4
5
6
7
8
    def make_lab(self, m, n):
        if n <= self.config['lab_num']:  # проверяем не вышли ли за предел к-ства лаб
            if float(m) > float(self.config['lab_max']):  # если оценка больше заданой, то присваиваем макс значению
                self.marks[n] = self.config['lab_max']
            else:
                self.marks[n] = m  # если нет, то берем наше значение
        # print(self.marks)
        return self  # ссылка на наш обьект


Данная ф-ция принимает два (и только два) аргумента.

Кликните здесь для просмотра всего текста
Если n не задано, подразумевается сдача первого невыполненного практического задания.


Этого нигде нет. Можете, по умолчанию, присваивать n значение -1 (или None, или то, что вам нравится), далее проверять, присвоилось ли новое значение, и в зависимости от этого что-то делать.
0
0 / 0 / 0
Регистрация: 13.11.2013
Сообщений: 33
24.12.2015, 15:56  [ТС]
Цитата Сообщение от rennnorb Посмотреть сообщение
Данная ф-ция принимает два (и только два) аргумента.
Кликните здесь для просмотра всего текста
Если n не задано, подразумевается сдача первого невыполненного практического задания.
Этого нигде нет. Можете, по умолчанию, присваивать n значение -1 (или None, или то, что вам нравится), далее проверять, присвоилось ли новое значение, и в зависимости от этого что-то делать.
Сделал как вы сказали. Но ничего от этого не изменилось.
Изменённый код:

Python
1
2
3
4
5
6
def make_lab(self, m, n= None):
            if n <= self.config['lab_num']:
                if int(m) > int(self.config['lab_max']):
                    self.marks[n] = self.config['lab_max']
                else:
                    self.marks[n] = m
0
0 / 0 / 0
Регистрация: 03.04.2017
Сообщений: 1
03.04.2017, 19:53
Python
1
def __init__(self, name, config, marks)
>>> marks = {}
а также соглашусь с предыдущими комментариями.
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
03.04.2017, 19:58
Цитата Сообщение от gen2345 Посмотреть сообщение
а также соглашусь с предыдущими комментариями.

Не по теме:

люди из 2015го благодарят Вас :)

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.04.2017, 19:58
Помогаю со студенческими работами здесь

Задача по классам
ПОМОГИТЕ, пожалуйста, доделать(или переделать) задачу (добавить конструктор копирования и т..д.)При этом ипеременные должны быть...

Задача С++ по классам
N треугольников плоскости заданы длинами своих сторон. В каждом треугольнике найти наименьшую из трёх сторон. Среди этих наименьших ...

Задача по классам
задание. Разработайте класс для моделирования квадратных трехчленов. Предусмотрите в классе функции-члены для вычисления дискриминанта,...

Задача по классам.с++
Задание 1 Разработать пользовательский тип (класс) «матрица целых чисел». Класс должен содержать: – все нужные поля, исходя из...

Задача по классам и объектам
Описать указанный класс (методы перечислены в скобках, поля выбрать самостоятельно). Создать и инициализировать экземпляр этого класса....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru