Форум сайта python.su
Пишу программный код:
создаю список “works” - перечень выполняемых на неком предприятии в принципе возможных работ “activities” (типа возможных разнарядок, трудовых пакетов и их стоимость…).
Этот список “works” содержит подлежащие обработке данные “name”: …., “activity”: …., “costs”: ….
и я присваиваю этим данным спектр значений для обработки в будущем цикле.
Задача (для начала) - чтобы программа выбрала из списка “works” разнарядки “activities”/трудовые пакеты Nr.1, Nr.2, Nr. 3
и распечатала только лишь их на выходе.
Когда это отладится - тогда я буду думать еще как просуммировать “costs” выбранных номеров “activities” - но об этом лучше потом, не сразу: to avoid overloading.
Ниже привожу код написанный на данный момент :
# FileName 'Constructor_Class_workPackage.py' # creating class Work class Work: def __init__(self, name="", activity="", costs=0): self.name = name self.activity = activity self.costs = costs def init_from_dict(self, works_dict): self.name = works_dict.get("name") self.gender = works_dict.get("activity") self.age = works_dict.get("costs")
# FileName 'output_choosed_Workpackage.py' from Constructor_Class_workPackage import Work works = [{"name": "Max Must", "activity": "Software development 1", "costs": 100}, {"name": "Peter Beisp", "activity": "Software development 1", "costs": 95}, {"name": "Jacky Sparrowson", "activity": "Management", "costs": 70}, {"name": "Tonia Tirolsenia", "activity": "Software Testing area 1", "costs": 85}, {"name": "Antony Tirolsen", "activity": "Software Testing area 2", "costs": 80}, {"name": "Mister A", "activity": "buying materials group A", "costs": 35}, {"name": "Mister X", "activity": "buying materials group B", "costs": 35}, {"name": "Mister Y", "activity": "buying materials group Y", "costs": 30}, {"name": "Mister Z", "activity": "buying materials group Z", "costs": 25}] for work in works: obj_work = Work() # creating object obj_work from the class Work obj_work.init_from_dict(work) # print(works(range(1, 3))) ??? hier my Idea was ... to select and to print elements Nr.1 till Nr.3 # from the list 'works' but I get hier -> error... #Hier I'm asking for corrrecting and for helping print("name work:", obj_work.name) print("activity work:", obj_work.activity) print("costs work:", obj_work.costs) print('\n')
C:\Users\Onri\......Projects\........Praktikum\venv\Scripts\python.exe C:/Users/Onri/.......Projects/........Praktikum/output_choosed_Workpackage.py name work: Max Must activity work: costs work: 0 name work: Peter Beisp activity work: costs work: 0 name work: Jacky Sparrowson activity work: costs work: 0 name work: Tonia Tirolsenia activity work: costs work: 0 name work: Antony Tirolsen activity work: costs work: 0 name work: Mister A activity work: costs work: 0 name work: Mister X activity work: costs work: 0 name work: Mister Y activity work: costs work: 0 name work: Mister Z activity work: costs work: 0 Process finished with exit code 0
C:\Users\Onri\........Projects\..........Praktikum\venv\Scripts\python.exe C:/Users/Onri/.........Projects/............Praktikum/output_choosed_Workpackage.py File "C:/Users/Onri/........Projects/............Praktikum/output_choosed_Workpackage.py", line 17 print(works(range(1, 3))) ??? select elements Nr.1 till Nr.3 ^ SyntaxError: invalid syntax Process finished with exit code 1
Офлайн
А теперь, если ты сконцентрируешь голову не на всём подряд, а только на этой задаче, то ты увидишь, что метод init_from_dict() написан неправильно. Оттуда и эти нули. Первый шаг ты сделал - создание отдельного топика для отдельной задачи. Этот отдельный топик даёт возможность не думать ни о чём другом, кроме того, что относится к делу. Так нужно делать для всех задач. Если у тебя появляется задача, ты делаешь для неё отдельную папку на диске и там, в этой папке для этой задачи, пишешь все файлы, относящиеся только к этой задаче. Так ты можешь распределять работу и всегда держать под контролем отдельные её шаги, этапы и прочее. В том числе ты также можешь проверять какие-то гипотезы. Ты для гипотезы тоже создаёшь отдельную папку и там эту гипотезу проверяешь. Если она успешна, ты потом оттуда что-то берёшь; если она неуспешна, ты просто удаляешь эту папку этой гипотезы и всё.
Отредактировано py.user.next (Дек. 26, 2021 08:17:02)
Офлайн
Спасибо за подсказку.
Да, поправил метод init_from_dict(self, works_dict)
теперь выглядит так:
# FileName 'Constructor_Class_workPackage.py' # creating class Work class Work: def __init__(self, name="", activity="", costs=0): self.name = name self.activity = activity self.costs = costs def init_from_dict(self, works_dict): self.name = works_dict.get("name") self.activity = works_dict.get("activity") self.costs = works_dict.get("costs")
# FileName 'output_choosed_Workpackage.py' from Constructor_Class_workPackage import Work works = [{"name": "Max Must", "activity": "Software development 1", "costs": 100}, {"name": "Peter Beisp", "activity": "Software development 1", "costs": 95}, {"name": "Jacky Sparrowson", "activity": "Management", "costs": 70}, {"name": "Tonia Tirolsenia", "activity": "Software Testing area 1", "costs": 85}, {"name": "Antony Tirolsen", "activity": "Software Testing area 2", "costs": 80}, {"name": "Mister A", "activity": "buying materials group A", "costs": 35}, {"name": "Mister X", "activity": "buying materials group B", "costs": 35}, {"name": "Mister Y", "activity": "buying materials group Y", "costs": 30}, {"name": "Mister Z", "activity": "buying materials group Z", "costs": 25}] for work in works: obj_work = Work() # creating object obj_work from the class Work obj_work.init_from_dict(work) print(works(range(1, 3))) ??? hier my Idea was ... to select and to print elements Nr.1 till Nr.3 # from the list 'works' but I get hier -> error... #Hier I'm asking for corrrecting and for helping print("name work:", obj_work.name) print("activity work:", obj_work.activity) print("costs work:", obj_work.costs) print('\n')
C:\Users\Onri\...........Projects\.............\venv\Scripts\python.exe C:/Users/Onri/...........Projects/................/output_choosed_Workpackage.py Traceback (most recent call last): File "C:/Users/Onri/...........Projects/.............../output_choosed_Workpackage.py", line 17, in <module> print(works(range(1, 3))) # ??? select elements Nr.1 till Nr.3 TypeError: 'list' object is not callable Process finished with exit code 1
Отредактировано Rikin (Дек. 26, 2021 15:29:51)
Офлайн
Rikin
а при запуске файла output_choosed_Workpackage.py (когда команда print(works(range(1, 3)) активирована) выдаётся сообщение об ошибке: выдаётся сообщение об ошибке:
>>> lst = [1, 2, 3] >>> lst() Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'list' object is not callable >>>
Отредактировано py.user.next (Дек. 26, 2021 15:29:51)
Офлайн
спасибо.
Поясните непонятливому: А так а это куда в программый код поместить?:
py.user.next
>>> lst =
>>> lst()
Traceback (most recent call last):
File “<stdin>”, line 1, in <module>
TypeError: ‘list’ object is not callable
>>>
Офлайн
Rikin
Поясните непонятливому: А так а это куда в программый код поместить?:
Офлайн
class Work: def __init__(self, name="", activity="", costs=0): self.name = name self.activity = activity self.costs = costs works = [{"name": "Max Must", "activity": "Software development 1", "costs": 100}, {"name": "Peter Beisp", "activity": "Software development 1", "costs": 95}, {"name": "Jacky Sparrowson", "activity": "Management", "costs": 70}, {"name": "Tonia Tirolsenia", "activity": "Software Testing area 1", "costs": 85}, {"name": "Antony Tirolsen", "activity": "Software Testing area 2", "costs": 80}, {"name": "Mister A", "activity": "buying materials group A", "costs": 35}, {"name": "Mister X", "activity": "buying materials group B", "costs": 35}, {"name": "Mister Y", "activity": "buying materials group Y", "costs": 30}, {"name": "Mister Z", "activity": "buying materials group Z", "costs": 25}] obj_lst = [] for work in works: obj_lst.append(Work(**work)) for i in range(1, 3): print("name work:", obj_lst[i].name) print("activity work:", obj_lst[i].activity) print("costs work:", obj_lst[i].costs) print('\n')
name work: Peter Beisp activity work: Software development 1 costs work: 95 name work: Jacky Sparrowson activity work: Management costs work: 70
Офлайн
RikinДа, я просто выделил твою ошибку. Ты вызываешь список как функцию. Но список-то это не функция.
И там тоже ведь ошибка?
Офлайн
xam1816
obj_lst =
for work in works:
obj_lst.append(Work(**work))
obj_lst.append(Work(**work))
Отредактировано Rikin (Дек. 27, 2021 01:37:58)
Офлайн
py.user.next
Да, я просто выделил твою ошибку. Ты вызываешь список как функцию. Но список-то это не функция.
print(works[range(1, 3)])
Отредактировано Rikin (Дек. 27, 2021 01:37:25)
Офлайн