Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755

ООП фирмы

22.08.2020, 21:40. Показов 2354. Ответов 39
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не пойму, что надо поправить?
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Firma():
    def __init__(self, direktor, rabotnik, zakazchik, 
    predstavitel_zakazchika):
        self.direktor = direktor
        self.rabotnik = rabotnik
        self.zakazchik = zakazchik
        self.predstavitel_zakazchika = predstavitel_zakazchika
#        self.denga = denga
 
    def zakaz_i_vistavlenie_cheta(self, denga):
        print("Директор, " + self.direktor + ", \n" "получает оплату от заказчика, \nкоторую зовут " + self.zakazchik + ", \nв сумме " + str(self.denga) + " долларов.")
 
professional_LTD = Firma(
direktor = "Генадий Александрович", 
rabotnik = "Василий", 
zakazchik = "Мария Петровна", 
predstavitel_zakazchika = "Дмитрий")
 
professional_LTD.zakaz_i_vistavlenie_cheta(1000)
Миниатюры
ООП фирмы  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.08.2020, 21:40
Ответы с готовыми решениями:

Изучаю Python, сейчас учу основы ООП, где можно найти задачи по ООП
Скиньте пожалуйста источники с задачами(желательно на русском)

Помочь директору фирмы развезти сотрудников фирмы по домам на такси
После затянувшегося совещания директор фирмы решил заказать такси, чтобы развезти сотрудников по домам. Он заказал N машин - ровно столько,...

Создайте класс Vendor, который имеет следующие поля — наименование фирмы, адрес фирмы, телефон
2. Создайте класс Vendor, который имеет следующие поля - наименование фирмы, адрес фирмы, телефон. Создайте функцию конструктор, которая...

39
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
22.08.2020, 21:52
Цитата Сообщение от supmener Посмотреть сообщение
class Firma():
выкинуть скобки
Цитата Сообщение от supmener Посмотреть сообщение
str(self.denga)
выкинуть self
1
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
22.08.2020, 21:56  [ТС]
А скобки зачем выкидывать?
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
22.08.2020, 22:03
А зачем они там нужны?


Добавлено через 6 минут
supmener, если класс наследуется по дефолту от object, можно это не указывать. И пустые скобки ни к чему.
Если уж очень прет, можно и указать
Python
1
class Firma(object):
1
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
22.08.2020, 22:08
Цитата Сообщение от supmener Посмотреть сообщение
что надо поправить?
У тебя denga, будучи просто параметром метода, не присваивается какому либо атрибуту\свойству экземпляра класса (self), поэтому нет никакого резона спрашивать у класса этот атрибут.
1
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
22.08.2020, 22:16  [ТС]
Сейчас опять не работает.
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 Firma():
    def __init__(self, direktor, rabotnik, zakazchik, 
    predstavitel_zakazchika):
        self.direktor = direktor
        self.rabotnik = rabotnik
        self.zakazchik = zakazchik
        self.predstavitel_zakazchika = predstavitel_zakazchika
#        self.denga = denga
 
    def zakaz_i_vistavlenie_cheta(self, denga):
        print("Директор, " + self.direktor + ", \n" "получает оплату от заказчика, \nкоторую зовут " + self.zakazchik + ", \nв сумме " + str(denga) + " долларов.")
 
    def viponnenie_raboti(self):
        rabota ='Работник ' + self.rabotnik + ' выполняет работу.'
        return rabota
 
    def polychenie_zakaza_i_oplata(self, denga2):
        if denga2 < self.denga:
            print("") #"Не хватает %d долларов. Забрать товар нельзя", denga - denga2
        print('Представитель заказчика, ' + self.predstavitel_zakazchika + ", \nоплачивает " + str(denga2) + " долларов и забирает товар.")
        
 
professional_LTD = Firma(
direktor = "Генадий Александрович", 
rabotnik = "Василий", 
zakazchik = "Мария Петровна", 
predstavitel_zakazchika = "Дмитрий")
 
professional_LTD.zakaz_i_vistavlenie_cheta(1000)
print(professional_LTD.viponnenie_raboti())
professional_LTD.polychenie_zakaza_i_oplata(1000)
Миниатюры
ООП фирмы  
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
22.08.2020, 22:22
Цитата Сообщение от supmener Посмотреть сообщение
if denga2 < self.denga:
Ну ты ж сам self.denga закомментировал
0
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
22.08.2020, 22:27  [ТС]
Сейчас раскомментировал.
Миниатюры
ООП фирмы  
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
22.08.2020, 22:28
supmener, вот, поправил. Теперь думай над логикой.
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
class Firma:
    def __init__(self, direktor, rabotnik, zakazchik,
                 predstavitel_zakazchika, denga):
        self.direktor = direktor
        self.rabotnik = rabotnik
        self.zakazchik = zakazchik
        self.predstavitel_zakazchika = predstavitel_zakazchika
        self.denga = denga
 
    def zakaz_i_vistavlenie_cheta(self, denga):
        print(
            "Директор, " + self.direktor + ", \n" "получает оплату от заказчика, \nкоторую зовут " + self.zakazchik +
            ", \nв сумме " + str(denga) + " долларов.")
 
    def viponnenie_raboti(self):
        rabota = 'Работник ' + self.rabotnik + ' выполняет работу.'
        return rabota
 
    def polychenie_zakaza_i_oplata(self, denga2):
        if denga2 < self.denga:
            print(f"Не хватает {self.denga - denga2} долларов. Забрать товар нельзя")
        print('Представитель заказчика, ' + self.predstavitel_zakazchika + ", \nоплачивает " + str(
            denga2) + " долларов и забирает товар.")
 
 
professional_LTD = Firma(
    direktor="Генадий Александрович",
    rabotnik="Василий",
    zakazchik="Мария Петровна",
    predstavitel_zakazchika="Дмитрий",
    denga=5000)
 
professional_LTD.zakaz_i_vistavlenie_cheta(1000)
print(professional_LTD.viponnenie_raboti())
professional_LTD.polychenie_zakaza_i_oplata(1000)
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
22.08.2020, 22:29
Цитата Сообщение от supmener Посмотреть сообщение
Сейчас раскомментировал.
Цитата Сообщение от supmener Посмотреть сообщение
self.denga = denga
аргумент denga-то где?
0
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
22.08.2020, 22:35  [ТС]
На скриншоте вроде так же, как у Вас.

Добавлено через 33 секунды
А, понял.
0
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
22.08.2020, 22:44  [ТС]
Подправил строку форматирования под Python 3.4.3. Почему-то появляется цифра в выводе 4000.
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
class Firma:
    def __init__(self, direktor, rabotnik, zakazchik,
                 predstavitel_zakazchika, denga):
        self.direktor = direktor
        self.rabotnik = rabotnik
        self.zakazchik = zakazchik
        self.predstavitel_zakazchika = predstavitel_zakazchika
        self.denga = denga
 
    def zakaz_i_vistavlenie_cheta(self, denga):
        print(
            "Директор, " + self.direktor + ", \n" "получает оплату от заказчика, \nкоторую зовут " + self.zakazchik +
            ", \nв сумме " + str(denga) + " долларов.")
 
    def viponnenie_raboti(self):
        rabota = 'Работник ' + self.rabotnik + ' выполняет работу.'
        return rabota
 
    def polychenie_zakaza_i_oplata(self, denga2):
        if denga2 < self.denga:
            print("Не хватает {}".format(self.denga - denga2) + " долларов. Забрать товар нельзя")
        print('Представитель заказчика, ' + self.predstavitel_zakazchika + ", \nоплачивает " + str(
            denga2) + " долларов и забирает товар.")
 
 
professional_LTD = Firma(
    direktor="Генадий Александрович",
    rabotnik="Василий",
    zakazchik="Мария Петровна",
    predstavitel_zakazchika="Дмитрий",
    denga=5000)
 
professional_LTD.zakaz_i_vistavlenie_cheta(1000)
print(professional_LTD.viponnenie_raboti())
professional_LTD.polychenie_zakaza_i_oplata(1000)
Миниатюры
ООП фирмы  
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
22.08.2020, 22:50
Цитата Сообщение от supmener Посмотреть сообщение
Почему-то появляется цифра в выводе 4000.
Цитата Сообщение от iSmokeJC Посмотреть сообщение
Теперь думай над логикой.
дык
1
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
22.08.2020, 22:56  [ТС]
Увидел 5000. Ещё хотел задать вопрос. Как прописать, чтобы до начисления денег, сколько надо будет заплатить, нельзя было вызвать выполнение работы и без выполненной работы нельзя было заплатить?
0
22.08.2020, 23:12

Не по теме:

Нихрена не понял

0
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
23.08.2020, 06:27  [ТС]
Логику подправил. Только не работает то, что связано с if. То есть при внесении меньшей суммы не выводится сообщение.

Директор, Генадий Александрович,
получает договор на работу от заказчика,
которую зовут Мария Петровна,
в сумме 1000 долларов.
Работник Василий выполняет заказ.
Представитель заказчика, Дмитрий,
оплачивает 850 долларов и забирает товар.

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
class Firma:
    def __init__(self, direktor, rabotnik, zakazchik,
                 predstavitel_zakazchika, denga):
        self.direktor = direktor
        self.rabotnik = rabotnik
        self.zakazchik = zakazchik
        self.predstavitel_zakazchika = predstavitel_zakazchika
        self.denga = denga
 
    def zakaz_i_vistavlenie_cheta(self, denga):
        print(
            "Директор, " + self.direktor + ", \n" "получает договор на работу от заказчика, \nкоторую зовут " + self.zakazchik +
            ", \nв сумме " + str(denga) + " долларов.")
 
    def viponnenie_raboti(self):
        rabota = 'Работник ' + self.rabotnik + ' выполняет заказ.'
        return rabota
 
    def polychenie_zakaza_i_oplata(self, denga2):
        if denga2 < self.denga:
            print("Не хватает {}".format(self.denga - denga2) + " долларов. Забрать товар нельзя")
        else:
            print('Представитель заказчика, ' + self.predstavitel_zakazchika + ", \nоплачивает " + str(
            denga2) + " долларов и забирает товар.")
 
 
professional_LTD = Firma(
    direktor="Генадий Александрович",
    rabotnik="Василий",
    zakazchik="Мария Петровна",
    predstavitel_zakazchika="Дмитрий",
    denga=0)
 
professional_LTD.zakaz_i_vistavlenie_cheta(1000)
print(professional_LTD.viponnenie_raboti())
professional_LTD.polychenie_zakaza_i_oplata(850)
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
23.08.2020, 09:28
Так self.denga = 0

Что-то ты сам себя запутал.
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 Firma:
    def __init__(self, direktor, rabotnik, zakazchik, predstavitel_zakazchika, denga):
        self.direktor = direktor
        self.rabotnik = rabotnik
        self.zakazchik = zakazchik
        self.predstavitel_zakazchika = predstavitel_zakazchika
        self.denga = denga
 
    def polychenie_zakaza_i_oplata(self, denga):
        if denga < self.denga:
            print("Не хватает {}".format(self.denga - denga) + " долларов. Забрать товар нельзя")
        else:
            print('Представитель заказчика, ' + self.predstavitel_zakazchika + ", \nоплачивает " +
                str(self.denga) + " долларов и забирает товар.")
 
 
professional_LTD = Firma(
    direktor="Генадий Александрович",
    rabotnik="Василий",
    zakazchik="Мария Петровна",
    predstavitel_zakazchika="Дмитрий",
    denga=1000)
 
professional_LTD.polychenie_zakaza_i_oplata(850)
professional_LTD.polychenie_zakaza_i_oplata(1100)
Добавлено через 7 минут
Цитата Сообщение от supmener Посмотреть сообщение
нельзя было заплатить?
Добавь статусы. Как раз твой вопрос по дискретке - создай конечный автомат.

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
class Firma:
    STATUS_NEW = 0
    STATUS_BILL = 1
    STATUS_DONE = 2
    STATUS_PAID = 3
    
    def __init__(self):
        self._status = self.STATUS_NEW
 
    def zakaz_i_vistavlenie_cheta(self):
        if self._status != self.STATUS_NEW:
            raise ValueError('error')
        #…
        self._status = self.STATUS_BILL
        
    def viponnenie_raboti(self):
        if self._status != self.STATUS_BILL:
            raise ValueError('error')
        rabota = 'Работник ' + self.rabotnik + ' выполняет заказ.'
        self._status = self.STATUS_DONE
        return rabota
 
    def polychenie_zakaza_i_oplata(self, denga):
        if self._status != self.STATUS_DONE:
            raise ValueError('error')
        #…
        self._status = self.STATUS_PAID
Добавлено через 28 секунд
0 -> 1 -> 2 -> 3
1
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
23.08.2020, 09:31
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
ты сам себя запутал
... и всех остальных до кучи
Что значит в классе фирмы эта таинственная denga? Как бы заказчик оплачивает, соответственно привносит в кассу фирмы деньги. Какая разница - сколько их там на данный момент есть?
Или это какой-то лимит на минимальный заказ?
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
23.08.2020, 09:35
Цитата Сообщение от iSmokeJC Посмотреть сообщение
Или это какой-то лимит на минимальный заказ?
Ага, заключили договор, выставили счёт, выполнили работы, оформили акт, а потом такие "Мы не можем принять у вас оплату, так как сумма работ меньше лимита"
1
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
23.08.2020, 09:46
Рыжий Лис, вот что я и имел ввиду
Цитата Сообщение от iSmokeJC Посмотреть сообщение
Теперь думай над логикой.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.08.2020, 09:46
Помогаю со студенческими работами здесь

6 клиентов случайным образом обращаются в 4 фирмы. Найти вероятность того , что хотя бы в одну фирмы не кто не
6 клиентов случайным образом обращаются в 4 фирмы. Найти вероятность того , что хотя бы в одну фирмы не кто не обратится.

“Работники и фирмы". Есть N фирм и M работников. Работники хотят устроиться на работу в одну из фирм, а фирмы хотят наня
I “Работники и фирмы&quot;. Есть N фирм и M работников. Работники хотят устроиться на работу в одну из фирм, а фирмы хотят нанять работников....

Где лучше учить ООП PHP ? И зачем нужен ООП
Здравствуйте ! До того как начел учить ООП я кайфовал от программирования, после того как начел учить ООП нет мотивации ну и т.д общем...

ООП. Переделать фрагмент программы под ООП
Есть небольшой фрагмент из программы, который необходимо перестроить под ООП(создать класс), для удобного испольщования. Можно ли изменить...

ООП ради ООП
Доброго времени суток! Есть к примеру класс Cat который реализует интерфейс Movable, инкапсулирует цвет, и прочее. Имеет ли смысл...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru