|
0 / 0 / 0
Регистрация: 12.02.2023
Сообщений: 3
|
|
Задача: Средний балл учеников (модифицированная)01.10.2023, 11:06. Показов 3758. Ответов 3
Метки помощь python (Все метки)
Добавьте в класс Student метод get_average_mark(), который будет подсчитывать средний балл учащегося.
Модифицируйте программу из предыдущей задачи так, чтобы она вычисляла средний балл пяти студентов из класса. Формат входных данных C клавиатуры подряд вводятся описания 5 студентов (по 2-3 строки на студента). На первой строчке вводятся через пробел: имя (слово из латинских букв не длиннее 50 символов), фамилия (слово из латинских букв не длиннее 50 символов), возраст (натуральное число, не превышающее 100), класс (целое число от 1 до 11), количество оценок (целое неотрицательно число, не превышающее 30). На второй строчке через пробел вводятся оценки студента. Каждая из оценок — целое число от 2 до 5. Если это не последний студент в списке - дополнительно на вход подаётся пустая строчка. Формат выходных данных Требуется вывести 5 вещественных чисел с точностью не менее 6 знаков после десятичной точки — средние баллы учащихся в том порядке, в котором они задаются во входных данных. Я уже написал рабочий код с классом Student. Но с этой задачей разобраться не могу пример: входные данные выходные данные Bill Gates 15 7 3 3.333333 2 5 3 4.200000 4.500000 Sergey Brin 10 4 5 4.000000 5 3 4 5 4 2.333333 Linus Torvalds 12 5 2 4 5 Larry Ellison 17 11 4 4 4 4 4 Steve Jobs 16 9 3 2 2 3 код с класом Student class Student: def __init__(self, name: str = "Вася", surname: str = "Пупкин", age: int = 16, class_number: int = 11, marks: list = None) -> None: self.__name = name self.__surname = surname self.__age = age self.__class_number = class_number if marks is None: self.__marks = [5, 5, 5] else: self.__marks = marks def show(self) -> None: print(f"{self.__name} {self.__surname} {self.__age} {self.__class_number} {len(self.__marks)}") print(*self.__marks) def read_student() -> Student: name, surname, age, class_number, marks_len = input().split() marks = list(map(int, input().split())) return Student(name, surname, int(age), int(class_number), marks) def print_all_students(students_journal: list) -> None: for student in students_journal: student.show() def main() -> None: students_journal = list() for _ in range(4): students_journal.append(read_student()) input() students_journal.append(read_student()) print_all_students(students_journal) if __name__ == '__main__': main() import inspect def check_names(): """Проверяем наличие нужных классов и методов в программе""" names = [ {'name': 'Student', 'type': 'класс'}, {'name': 'read_student', 'type': 'метод'}, {'name': 'print_all_students', 'type': 'метод'}, ] for item in names: if item['name'] not in globals().keys(): raise RuntimeError(f"Ошибка: в программе не определён {item['type']} {item['name']}") def check_types(): """Проверяем соответствие типов данных""" type_settings = [ {'name': 'Student', 'type': 'isclass', 'typename': 'класс'}, {'name': 'read_student', 'type': 'isfunction', 'typename': 'метод'}, {'name': 'print_all_students', 'type': 'isfunction', 'typename': 'метод'}, ] for item in type_settings: method = getattr(inspect, item['type']) if not method(globals()[item['name']]): raise RuntimeError(f"Ошибка: {item['name']} не является {item['typename']}ом") def check_student_defaults(): """Проверяем, что у конструктора класса Student есть параметры по умолчанию""" try: Student() except TypeError: raise RuntimeError('Ошибка: в конструкторе класса Student не указаны значения по умолчанию для всех параметров') def check_student_show(): """Проверяем, что у класса Student есть метод show""" s = Student('Bill', 'Gates', 42, 11, [5, 5, 5]) if not hasattr(s, 'show'): raise RuntimeError('Ошибка: в классе Student нет метода show') if not inspect.ismethod(s.show): raise RuntimeError('Ошибка: поле show класса Student не является методом') def check_print_all_students(): """Проверяем корректность параметров метода print_all_students""" try: a = print_all_students except NameError: raise RuntimeError('Ошибка: в программе не определён метод print_all_students') if __name__ == '__main__': check_names() check_types() check_student_defaults() check_student_show() check_print_all_students()
0
|
|
| 01.10.2023, 11:06 | |
|
Ответы с готовыми решениями:
3
Задача: Средний балл Задача "Средний балл по классам" Модифицированная задача о Ханойских башнях |
|
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
|
|
| 01.10.2023, 13:00 | |
|
artemiytema, условие предыдущей (немодифицированной) задачи приведите.
0
|
|
|
0 / 0 / 0
Регистрация: 12.02.2023
Сообщений: 3
|
|
| 01.10.2023, 17:55 [ТС] | |
|
Вам нужно разработать программу, которая будет хранить данные об успеваемости студентов.
Для того, чтобы было легче ориентироваться в данных, вам нужно будет создать класс Student, в котором будет конструктор, принимающий на входе имя, фамилию ученика, возраст ученика, класс обучения ученика и список оценок. В случае, если в конструктор не передано ни одного параметра - создаётся студент Вася Пупкин, 16 лет, 11 класс, три пятёрки. метод show(), который будет выводить данные о студенте на экран в следующем формате: на первой строке выводятся через пробел имя студента, фамилия студента, возраст студента, класс обучения студента, количество оценок; на второй строке выводятся через пробел все оценки ученика Создайте две функции (вне класса), которые будут вводить данные студента с клавиатуры и выводить их на экран: read_student() — функция считывает с клавиатуры всю информацию об студенте, создаёт экземпляр класса «Student» и возвращает его в качестве результата работы. print_all_students(students_journal) — функция принимает на вход список студентов (students_journal) и выводит информацию обо всех них. Проверьте работу этих двух функций на вводимом с клавиатуры списке из 5 учеников. Формат входных данных С клавиатуры вводятся описания 5 студентов (по 2-3 строки на студента). На первой строчке вводятся через пробел: имя (слово из латинских букв не длиннее 50 символов), фамилия (слово из латинских букв не длиннее 50 символов), возраст (натуральное число, не превышающее 100), класс (целое число от 1 до 11), количество оценок (целое неотрицательно число, не превышающее 30). На второй строчке через пробел вводятся оценки студента. Каждая из оценок — целое число от 2 до 5. Если это не последний студент в списке - дополнительно на вход подаётся пустая строчка. Формат выходных данных Требуется вывести учеников в том же формате, котором они вводились (но без пустых строк между учащимися). входные данные Bill Gates 15 7 3 2 5 3 Sergey Brin 10 4 5 5 3 4 5 4 Linus Torvalds 12 5 2 4 5 Larry Ellison 17 11 4 4 4 4 4 Steve Jobs 16 9 3 2 2 3 выходные данные Bill Gates 15 7 3 2 5 3 Sergey Brin 10 4 5 5 3 4 5 4 Linus Torvalds 12 5 2 4 5 Larry Ellison 17 11 4 4 4 4 4 Steve Jobs 16 9 3 2 2 3
0
|
|
|
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
|
||||||
| 01.10.2023, 19:15 | ||||||
0
|
||||||
| 01.10.2023, 19:15 | |
|
Помогаю со студенческими работами здесь
4
Ключ - ФИО, значение – средний балл
Вывести фамилии студентов, балл по определенному предмету которых превышает средний балл по предмету на 0.5 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
1С: Программный отбор элементов справочника Номенклатура по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа.
В качестве фильтра для отбора справочника служит группа номенклатуры.
Отбор под наименованию группы (на. . .
|
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
|
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс.
Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
|
1С: Программный отбор элементов справочника Сотрудники по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа.
В качестве фильтра для отбора служит предопределенное значение перечислений.
Процедура. . .
|
|
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
|
Оттенки серого
Argus19 18.03.2026
Оттенки серого
Нашёл в интернете 3 прекрасных модуля:
Модуль класса открытия диалога открытия/ сохранения файла на Win32 API;
Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|