0 / 0 / 0
Регистрация: 28.02.2019
Сообщений: 12

Получить доступ к объекту класса

30.09.2019, 15:05. Показов 2486. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Столкнулся с такой задачей: есть список студентов с 3 оценками и суммой баллов. Ввод данных из файла - построчное считывание.
Например:
Иванов Сергей 70 70 70 210
Сергеев Петр 100 100 0 200
Петров Василий 70 60 70 200
Васильев Андрей 70 60 70 200
Андреев Денис 100 30 100 230
Денисов Роман 50 50 50 150
Романов Иван 60 70 70 200
Ким Чен Ир 50 50 50 150
Ким Ир Сен 40 40 40 120

Нужно завести класс Students c атрибутами mark1, mark2, mark3 и sumMarks.
Завести все это в список myStudents. И вывести первые 5 сумм баллов, начиная с наибольшей.
Я отсортировал через key по сумме.
Вопрос: как получить доступ к sumMarks конкретного элемента?
То есть я хочу, например, вывести 2ой по счету myStudents.sumMarks. Есть ли способы обращения к этим строчкам?
Типа myStudens.sumMarks[2]. Надеюсь, внятно объяснил.
Предлагать решать по-другому не надо. Тупик появился в этом моменте.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.09.2019, 15:05
Ответы с готовыми решениями:

Как получить доступ к объекту ui из другого класса
Добрый день!Подскажите пожалуйста как обратиться к объекту из другого класса. void SrchDlg::on_pushButtonSearch_clicked() { ...

Как получить доступ к объекту другого класса
Здравствуйте друзья. Прошу помощи по вопросу В главном viewController cоздаю объект Label и записываю в него текст ...

Как получить доступ к объекту класса из другой формы?
В файле создан класс с одним полем (это для начала). Есть две формы. Создаю в одной из них объект класса, как получить к нему доступ из...

6
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,695
Записей в блоге: 29
30.09.2019, 15:12
Фырфа, так зависит от того, как ты это реализовал в классе. По идее должно просто как атрибут работать, типа student.sum_marks
0
Модератор
Эксперт Python
 Аватар для Fudthhh
2696 / 1602 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
30.09.2019, 15:14
Фырфа, может код покажете? Т.к. нам не известно что и как у вас оформлено в классе.
0
0 / 0 / 0
Регистрация: 28.02.2019
Сообщений: 12
30.09.2019, 15:32  [ТС]
Там еще условие, что те, у кого хоть по одному предмету меньше 40, покидают конкурс. Это роли не играет, а объясняю, чтобы коду не удивлялись. Сумму я считаю вручную, но в класс закидываю.

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
class Students:
    mark1, mark2, mark3 = 0, 0, 0
    sumMarks = 0
 
 
def sortSum(lol):
    return lol.sumMarks
 
 
inF = open('input.txt', 'r', encoding='utf-8')
outF = open('output.txt', 'w', encoding='utf-8')
 
curArray = inF.readlines()
studMarks = []
for i in range(len(curArray)):
    curLine = curArray[i].split()
    studComp = Students()
    curMark1 = int(curLine[-1])
    curMark2 = int(curLine[-2])
    curMark3 = int(curLine[-3])
    if curMark1 >= 40\
            and curMark2 >= 40\
            and curMark3 >= 40:
        studComp.mark1 = curMark1
        studComp.mark2 = curMark2
        studComp.mark3 = curMark3
        studComp.sumMarks = curMark1 + curMark2 + curMark3
        studMarks.append(studComp)
studMarks.sort(key=sortSum)
Добавлено через 3 минуты
Цитата Сообщение от Welemir1 Посмотреть сообщение
Фырфа, так зависит от того, как ты это реализовал в классе. По идее должно просто как атрибут работать, типа student.sum_marks
если я напишу studMarks.sumMarks, то я как бы ссылаюсь на столбик с суммой баллов,а мне нужен конкретный ряд, т.е. даже ячейка.
Через array можно сделать или просто список в списке. Но мне надо именно через класс.
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,695
Записей в блоге: 29
30.09.2019, 15:56
Цитата Сообщение от Фырфа Посмотреть сообщение
чтобы коду не удивлялись.
а тут сложно не удивляться, то ли ты за минуту на коленке написал, то ли с ООП знаком понаслышке.
Цитата Сообщение от Фырфа Посмотреть сообщение
Сумму я считаю вручную
зачем? пусть каждый объект при создании ее считает

где имя? почему не передаешь оценки аргументами в конструктор?
если бы класс был нормально реализован, то обращение к атрибуту было бы myStudens[0].sumMarks
1
0 / 0 / 0
Регистрация: 28.02.2019
Сообщений: 12
30.09.2019, 16:05  [ТС]
Согласен. Пока только изучаю и знаю понаслышке. Задача-то простая и пока не подразумевается более глубокое изучение класса, пока только ввели понятие.
Тут исключительно мое любопытство.
Если сможете более подробно объяснить на примере, то было бы здорово.
Цитата Сообщение от Welemir1 Посмотреть сообщение
Сообщение от Фырфа
чтобы коду не удивлялись.
а тут сложно не удивляться, то ли ты за минуту на коленке написал, то ли с ООП знаком понаслышке.
Сообщение от Фырфа
Сумму я считаю вручную
зачем? пусть каждый объект при создании ее считает
где имя? почему не передаешь оценки аргументами в конструктор?
если бы класс был нормально реализован, то обращение к атрибуту было бы myStudens[0].sumMarks
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,695
Записей в блоге: 29
30.09.2019, 17:02
Цитата Сообщение от Фырфа Посмотреть сообщение
Если сможете более подробно объяснить на примере, то было бы здорово.
я попробую, но без файлов, просто данные. Нам нужно чтобы каждый объект хранил данные о себе, потому атрибуты должны быть на уровне объектов, а не класса.
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
class Student:
    def __init__(self, name, *marks):
        # инициализатор каждого объекта, ждет что ты введешь имя и оценки, сразу сам считает сумму
        self.name = name
        # это наш список оценок, полученный при создании объекта
        self.marks = marks
        self.sum_of_marks = sum(marks)
    
    def __repr__(self):
        # просто для читаемого вывода
        return f"Student {self.name}, marks:{self.marks}, sum of marks:{self.sum_of_marks}"
    
# создаем 3 студентов, оценки не как у тебя в примере!
ivanov = Student('Ivanov', 70,70,70)
sergeev = Student('Sergeev', 100,100,80)
petrov = Student('Petrov',70,60,50)
# заносим в список
my_students = [ivanov, sergeev, petrov]
print(my_students) # выводим несортированный список
print('='*8). # просто печатаем разделитель
# выводим отсортированным по сумме оценок, от наибольшего к меньшему (так по задаче надо)
my_students.sort(key=lambda s:s.sum_of_marks, reverse =True)
print(my_students)
print('='*8)
print(my_students[1].sum_of_marks) # а вот вывод суммы конкретного элемента списка
задавай вопросы

Добавлено через 36 минут
эх, не обратил внимание, что у тебя сумма сразу идет в файле, ее тогда не стоит рассчитывать на лету, просто передавай параметрами в конструктор
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.09.2019, 17:02
Помогаю со студенческими работами здесь

Бинарное дерево подклассов основного класса-узла. Доступ к подклассам по указателю - объекту класса-родителя
Короче, необходимо сделать бинарное дерево, решающее арифметическое выражение, предварительно туда записанное. Есть основной класс...

Доступ к объекту класса
Всем привет, друзья! Начал изучать java. И решил по видеоуроку написать игру "Змейка", автор писал игру в notepad++ и грубо говоря,...

Доступ к объекту класса
Есть 3 класса MainWindow(Основной) и 2 второстепенных Controll и Mlist. // MainWindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H ...

Доступ к объекту класса
Всем привет! В h файле объявлено три класса: HeavyCar, Fuller, Emptier. Это код кнопки ПУСК: int i; //HeavyCar **masCar; masCar=new...

Получить несколько объектов в качестве аргументов и получить доступ к каждому объекту
Имеется несколько одинаковых объектов с разными данными. Пытаюсь передать их другому объекту при создании объекта ( конструктору) ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

Новые блоги и статьи
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru