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

Создание классов

27.03.2020, 19:49. Показов 1581. Ответов 6

Author24 — интернет-сервис помощи студентам
Написать программу с использованием класса.
Предусмотреть отсутствие данных, удовлетворяющих условию.

1. Список состоит из наименований направлений, количества студентов по каждому курсу (не менее 6 элементов);
2. Вывести список направлений с общим числом студентов более указанного значения.

Создал список и класс, а дальше что делать понять не могу. Просьба помочь.
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
naprav = [('ВТ:', 20, 29, 23, 14), ('ИЭ:', 20, 29, 23, 14), ('ЗИЭ:', 20, 29, 23, 14), ('АП:', 24, 24, 21, 17), ('ЗАП:', 32, 27, 25, 30), ('МС:', 26, 27, 23, 19), ('ЗМС:', 24, 20, 15, 17)]
 
class Spisok:
    grvt='ВТ'
    grpi='ИЭ'
    grzpi='ЗИЭ'
    grap='АП'
    grzap='ЗАП'
    grms='МС'
    grzms='ЗМС'
 
    def showvt (self, k):
        print('Количество студентов на направлении ', self.grvt, k)
    def showpi (self, k):
        print('Количество студентов на направлении ', self.grpi, k)
    def showzpi (self, k):
        print('Количество студентов на направлении ', self.grzpi, k)
    def showap (self, k):
        print('Количество студентов на направлении ', self.grap, k)
    def showzap (self, k):
        print('Количество студентов на направлении ', self.grzap, k)
    def showms (self, k):
        print('Количество студентов на направлении ', self.grms, k)
    def showzms (self, k):
        print('Количество студентов на направлении ', self.grzms, k)
 
name=Spisok()
Добавлено через 5 минут
чутка подзабыл про операции над списками называется. а так общее число вывел (плюс исправил косяк в списке)
Python
1
print(sum([i for i in naprav if str(i).isdigit()]))
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.03.2020, 19:49
Ответы с готовыми решениями:

Создание классов
Задание. Создать класс "Обыкновенные дроби", объектами которого являются числа z=a/b, где a-числитель, b-знаменатель, а принадлежит...

Создание классов
Создать конструктор, который принимает целое число – номер заказа и словарь, с информацией о заказе: 1) фамилия клиента; 2) Название...

Создание классов Python
Всем привет! не могу выполнить задание, помогите((( Создать класс ДЛИННОЕ ЧИСЛО, содержащее строковое поле- представление длинного...

6
1 / 1 / 0
Регистрация: 16.10.2019
Сообщений: 78
27.03.2020, 20:45  [ТС] 2
Подправил чутка программу, но теперь выдает кучу строк.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
potok = ['ВТ:', 20, 29, 23, 14, 'ИЭ:', 20, 29, 23, 14, 'ЗИЭ:', 20, 29, 23, 14, 'АП:', 24, 24, 21, 17, 'ЗАП:', 32, 27, 25, 30, 'МС:', 26, 27, 23, 19, 'ЗМС:', 24, 20, 15, 17]
 
class Spisok:
    naprav=['ВТ', 'ИЭ', 'ЗИЭ', 'АП', 'ЗАП', 'МС', 'ЗМС']
 
    def shown (self):
        print('Направления:', self.naprav)
 
 
name=Spisok()
#s= int(input())
 
for k in potok:
    name.shown()
print('Общее число студентов:', sum([i for i in potok if str(i).isdigit()]))
Миниатюры
Создание классов  
0
1 / 1 / 0
Регистрация: 16.10.2019
Сообщений: 78
28.03.2020, 00:07  [ТС] 3
Понял в чём ошибка. Осталось понять один момент - "Вывести список направлений с общим числом студентов более указанного значения". Эт как?

Добавлено через 3 минуты
Пока получилось следующее
Python
1
2
3
4
5
6
7
8
9
10
11
12
potok = ['ВТ:', 20, 29, 23, 14, 'ИЭ:', 20, 29, 23, 14, 'ЗИЭ:', 20, 29, 23, 14, 'АП:', 24, 24, 21, 17, 'ЗАП:', 32, 27, 25, 30, 'МС:', 26, 27, 23, 19, 'ЗМС:', 24, 20, 15, 17]
 
class Spisok:
    naprav=['ВТ', 'ИЭ', 'ЗИЭ', 'АП', 'ЗАП', 'МС', 'ЗМС']
 
    def shown (self):
        print('Направления:', self.naprav)
 
name=Spisok()
 
name.shown()
print('Общее число студентов:', sum([i for i in potok if str(i).isdigit()]))
Добавлено через 3 часа 11 минут
Переделал программу, т.к. подумал что нужно из исходного списка удалить наименования направлений и добавить их в пустой список. Получилось следующее:
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
32
33
34
35
36
potok = ['ВТ', 20, 29, 23, 14, 'ИЭ', 20, 29, 23, 14, 'ЗИЭ', 20, 29, 23, 14, 'АП', 24, 24, 21, 17, 'ЗАП', 32, 27, 25, 30, 'МС', 26, 27, 23, 19, 'ЗМС', 24, 20, 15, 17]
#Исходный список
 
#Создание класса
class Spisok:
    naprav=[] #Объявление переменных класса. Создание пустого списка
 
        #Объявление метода(ов) класса
    def shown (self):
        print('Направления:', self.naprav, '\nОбщее количество студентов:', sum([i for i in potok if str(i).isdigit()]))
 
    i = potok.index('ВТ')      #Удаление из исходного списка наименований направлений
    removed_itemi = potok.pop(i)
    a = potok.index('ИЭ')
    removed_itema = potok.pop(a)
    b = potok.index('ЗИЭ')
    removed_itemb = potok.pop(b)
    c = potok.index('АП')
    removed_itemc = potok.pop(c)
    d = potok.index('ЗАП')
    removed_itemd = potok.pop(d)
    e = potok.index('МС')
    removed_iteme = potok.pop(e)
    f = potok.index('ЗМС')
    removed_itemf = potok.pop(f)
 
    naprav.append(removed_itemi)    #Добавление в пустой список наименований направлений
    naprav.append(removed_itema)
    naprav.append(removed_itemb)
    naprav.append(removed_itemc)
    naprav.append(removed_itemd)
    naprav.append(removed_iteme)
    naprav.append(removed_itemf)
 
name=Spisok()
name.shown()
Думаю теперь как сделать по-короче.
0
1 / 1 / 0
Регистрация: 16.10.2019
Сообщений: 78
28.03.2020, 16:07  [ТС] 4
Капитально переделал программу, т.к. предыдущие варианты не соответствовали условиям задачи. Однако теперь не выводит общее количество.
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
potok = [('ВТ', 20, 29, 23, 14), ('ИЭ', 20, 29, 23, 14), ('ЗИЭ', 20, 29, 23, 14), ('АП', 24, 24, 21, 17), ('ЗАП', 32, 27, 25, 30), ('МС', 26, 27, 23, 19), ('ЗМС', 24, 20, 15, 17)]
#Исходный список
 
#Создание класса
class Spisok:
    #Объявление переменных класса
    kolvo = 100
 
    #Объявление метода(ов) класса
    def verify (self, a):
        global n
        if self.kolvo in a:
            n +=1
            print('Общее количество студентов:', sum([i for i in potok if str(i).isdigit()]))
        
n=0  
name=Spisok() #Создание объекта класса
for a in potok:
    name.verify(a)
 
for x in potok:
    print('Направления:', x) #Вывод направлений с количеством студентов на каждом курсе
 
if n == 0:
    print('Студентов нет')
Добавлено через 3 часа 47 минут
Крч, обнаружил ещё несколько ошибок и исправил. Крч сам разобрался (-ночь).
0
1730 / 968 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
28.03.2020, 18:06 5
Цитата Сообщение от Cat_on_Zone Посмотреть сообщение
Крч сам разобрался
Крч в ООП Вы не разбираетесь. Бестолковое условие задачи и бестолковое решение. Бессмысленный класс притянутый за уши.
0
Эксперт Python
5437 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
28.03.2020, 18:34 6
Цитата Сообщение от Cat_on_Zone Посмотреть сообщение
обнаружил ещё несколько ошибок
global в классах НИКОГДА не используется. Иначе сам смысл класса полностью теряется.
И в остальном класс на класс вовсе не похож.
Почитай про иницализатор класса __init__ и подумай для чего он.
Строки с длинным перечислением чего-либо нужно переносить.
80 символов - это максимальная длина строки кода.
0
 Аватар для Semen-Semenich
5162 / 3415 / 1162
Регистрация: 21.03.2016
Сообщений: 8,245
28.03.2020, 19:33 7
Лучший ответ Сообщение было отмечено Cat_on_Zone как решение

Решение

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
naprav = [
                ('ВТ:', 20, 29, 23, 14), ('ИЭ:', 20, 29, 23, 14),
                ('ЗИЭ:', 20, 29, 23, 14), ('АП:', 24, 24, 21, 17), ('ЗАП:', 32, 27, 25, 30),
                ('МС:', 26, 27, 23, 19), ('ЗМС:', 24, 20, 15, 17)
                ]
 
class Info:
 
    def __init__(self, arg):
        self.group = arg[0]
        self.sum_student = sum(arg[1:])
 
    def showvt (self):
        return self.sum_student 
    
    def __str__(self):
        return f'Количество студентов на направлении  {self.group} {self.sum_student}'
             
 
group = [Info(data) for data in naprav]
n = 90 # int(input())
 
for info in group:
    if info.showvt () > n:
        print(info)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.03.2020, 19:33
Помогаю со студенческими работами здесь

Создание экземпляра классов и наследование
Только начал изучать ООП в питоне. Ниже код + выдаваемая ошибка. что я делаю не так? Понимаю, что, скорее всего, ошибка элементарная, но...

Наследование, полиморфизм, создание классов
Доброго времени суток, у меня возник вопрос , опять же по данной теме. Есть код. Задание было таким: Написать программу, в...

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

Создание классов
Создать класс «клиент»(class Client) с полями: код клиента, ФИО, дата открытия вклада, размер вклада, процент по вкладу. Создать класс...

Создание классов
Задание на изображении


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

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

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Новые блоги и статьи
Нестандартные приемы работы с итераторами в C++
stackOverflow 02.03.2025
Итераторы - один из краеугольных камней C++, предоставляющий универсальный механизм обхода и манипуляции данными в контейнерах. Появившись как замена небезопасным указателям, они эволюционировали от. . .
Лексический анализ и регулярные выражения в C++26
stackOverflow 02.03.2025
Лексический анализ - ядро любого компилятора и инструмента обработки текста. Каждый программист сталкивается с задачами парсинга строк, обработки файлов конфигурации или анализа пользовательского. . .
Подробно о std::mdspan в C++23
stackOverflow 02.03.2025
Работа с многомерными массивами данных традиционно была одной из сложных задач в C++. Программистам приходилось создавать собственные абстракции или использовать сторонние библиотеки для эффективной. . .
Колмогоровская сложность в C++: Путь к совершенному коду
stackOverflow 02.03.2025
Абстрактная математическая теория Колмогорова стала мощным средством оценки и улучшения программного кода. Сложность алгоритма - не только в его вычислительной эффективности, но и в том, насколько. . .
Изменения в C# 14
stackOverflow 02.03.2025
Одно из самых значимых изменений в C# 14 - поддержка коллекционных выражений, которые позволяют создавать и инициализировать коллекции с помощью нового лаконичного синтаксиса. Это нововведение. . .
Разработка кроссплатформен­­­­ного мобильного приложения для iOS/Android на C++
bytestream 02.03.2025
C++ как язык программирования высокого уровня с прямым доступом к аппаратным ресурсам позволяет создавать приложения, работающие одинаково быстро как на iOS, так и на Android устройствах. Ни для кого. . .
Аутентификация/авторизация на Golang
bytestream 02.03.2025
Go предлагает множество возможностей для создания надежных систем аутентификации. Встроенные криптографические пакеты, высокая производительность и простота параллельной обработки запросов делают его. . .
Нововведения TypeScript 5.8
bytestream 02.03.2025
TypeScript 5. 8 приносит много возможностей и оптимизаций, которые существенно расширяют границы типобезопасного программирования на JavaScript. Эта версия включает ряд значительных улучшений в работе. . .
Выполнение кода в игровом цикле Unity с использованием не-MonoBehaviour классов C#
bytestream 02.03.2025
Обычный подход к разработке игр на Unity тесно связан с использованием MonoBehaviour - базового класса для скриптов, обеспечивающего доступ к игровому циклу через события Update, FixedUpdate и. . .
Управление инстанцирование­м вложенных классов в C#
bytestream 02.03.2025
Вложенные классы в C# - мощное средство для создания тесно связанных типов данных и логики. Такие классы определяются внутри других классов и обеспечивают высокий уровень инкапсуляции, позволяя. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru