Найти - Пользователи
Полная версия: выбор (и вывод в output) из созданного списка возможных работ - указанных отдельных трудовых пакетов “activities”
Начало » Центр помощи » выбор (и вывод в output) из созданного списка возможных работ - указанных отдельных трудовых пакетов “activities”
1 2
Rikin
Пишу программный код:

создаю список “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')

В этом состоянии программного кода при запуске файла ‘output_choosed_Workpackage.py’ я получаю следующий результат:

 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


к вышеприведенному состоянию/релизу кода есть несколько вопросов:

1.
Параметру “costs” списка ‘works’ было изначально присвоено значение 0, Но далее в списке ‘works’ параметру “costs” я задумал передавать значения (по списку).
При этом я исходил из того, что при пробеге циклом-FOR по значениям - все эти значения один за другим будут распечатаны на выходе: как это успешно и происходит
с параметром ‘Name’. Но это моё ожидание пока не стало реальностью.
Прошу помощь и поправки.

2.
Значения параметра “activity” списка ‘works’ после Run - вообще пустые на выходе.
str-значения из списка ‘works’ вообще не были переняты на выходе, хотя был задействован цикл FOR…
Прошу помощь и поправки.

3.
Строки 17-19 я закомментировал: здесь я хотел выбрать из общего списка ‘works’ лишь элементы Nr.1, Nr.2, Nr.3 from the list и вывести их на выход, но если я активирую команду
# print(works(range(1, 3)))
без # в начале строки,- то получаю нижеследующее сообщение об ошибке:

  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

Так же здесь прошу поправить ошибки и помощь.









py.user.next
А теперь, если ты сконцентрируешь голову не на всём подряд, а только на этой задаче, то ты увидишь, что метод init_from_dict() написан неправильно. Оттуда и эти нули. Первый шаг ты сделал - создание отдельного топика для отдельной задачи. Этот отдельный топик даёт возможность не думать ни о чём другом, кроме того, что относится к делу. Так нужно делать для всех задач. Если у тебя появляется задача, ты делаешь для неё отдельную папку на диске и там, в этой папке для этой задачи, пишешь все файлы, относящиеся только к этой задаче. Так ты можешь распределять работу и всегда держать под контролем отдельные её шаги, этапы и прочее. В том числе ты также можешь проверять какие-то гипотезы. Ты для гипотезы тоже создаёшь отдельную папку и там эту гипотезу проверяешь. Если она успешна, ты потом оттуда что-то берёшь; если она неуспешна, ты просто удаляешь эту папку этой гипотезы и всё.
Rikin
Спасибо за подсказку.
Да, поправил метод 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')

при запуске файла output_choosed_Workpackage.py (когда команда print(works(range(1, 3)) ДЕактивирована) выдаётся результат соответствующий ождианиям, параметры activity и costs - выдаются:

………………… …….
name work: Jacky Sparrowson
activity work: Management
costs work: 70


name work: Antonia Tirolsenia
activity work: Software Testing area 1
costs work: 85
……….. ……

Первая фаза выполнена - список выдаётся (хотя пока не в обработанном а в изначальном виде)
УРА!
=========================


а при запуске файла output_choosed_Workpackage.py (когда команда print(works(range(1, 3)) активирована) выдаётся сообщение об ошибке:

 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


Теперь хотелось бы чтобы осуществлялась выборка отдельных “activities” (набример: Nr.1, Nr.2, Nr. 3) из общего списка works

py.user.next
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
>>>

Да, и не пиши вместо слова here слово hier. Используй словарь какой-нибудь. Прямо на компьютер поставь словарь.
Rikin
спасибо.
Поясните непонятливому: А так а это куда в программый код поместить?:

py.user.next
>>> lst =
>>> lst()
Traceback (most recent call last):
File “<stdin>”, line 1, in <module>
TypeError: ‘list’ object is not callable
>>>

И там тоже ведь ошибка?
Или когда я помещу этот фрагмент в верном месте в мой код - ошибки не будет?

xam1816
Rikin
Поясните непонятливому: А так а это куда в программый код поместить?:
xam1816
 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
py.user.next
Rikin
И там тоже ведь ошибка?
Да, я просто выделил твою ошибку. Ты вызываешь список как функцию. Но список-то это не функция.
Rikin
xam1816
obj_lst =
for work in works:
obj_lst.append(Work(**work))

спасибо большое за помощь.
Вопрос1: что мы делаем в этой строке с помощью этой команды (и кв. скобки)?:
obj_lst =

Вопрос 2:
если можно, пояснките пожалуйста эту строку:
 obj_lst.append(Work(**work))
я знаю что метод append - это некое добавление, а то что в скобках? - хотелось бы понять что выполняет выражение в скобках (Work(**work))
Rikin
py.user.next
Да, я просто выделил твою ошибку. Ты вызываешь список как функцию. Но список-то это не функция.


спасибо. Попробую разобраться что где когда… и далее: а как надо?

Это здесь - Вы имеете ввиду я вызываю список как функцию?:
print(works(range(1, 3)))

Нужны, стало быть (хотя бы для верного направления) квадратные скобки… Куда бы их поместить… ?
Так, что ли?:
 print(works[range(1, 3)])
Я понимаю что пока вряд ли это выражение и воплощение безупречно….

Тему функции мне бы еще бы проработать … пока пытаюсь из практических примеров ухватить.


This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB