Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+3

Помогите, спасите! При помощи Np.linspace и присваивания в срез найти фактическую прибыль

Менеджер крупной столичной фирмы Алексей готовит отчет о прибыльности проекта. Для отчета о прибыли фирмы Алексей проанализировал много данных и построил графики дневной прибыли.

По плану, который был составлен до старта проекта, прибыль должна была увеличиваться линейно каждый день. Если за первый день работы проекта прибыль была 5 у.е., за последний — 15 у.е., между ними прошло 10 дней, то прибыль за второй день составит 6 у.е., за третий — 7 у.е. и так далее.

На деле оказалось, что участники проекта очень не любят понедельники, и их продуктивность по понедельникам (то есть каждый 7-ой день) снижается в 3 раза по сравнению с ожидаемой, а в пятницу — наоборот: участники проекта чувствуют душевный подъем и работают в 2 раза активнее. Из-за этого прибыль по этим дням изменяется пропорционально продуктивности.

Пример: ожидаемая прибыль проекта (план)

-пн: 6 у.е.
-вт: 8 у.е.
-ср: 10 у.е.
-чт: 12 у.е.
-пт: 14 у.е.
-сб: 16 у.е.
-вс: 18 у.е.
-пн: 20 у.е.
-вт: ... и т.д.

Фактическая прибыль проекта (с поправкой на продуктивность):

-пн: 2 у.е.
-вт: 8 у.е.
-ср: 10 у.е.
-чт: 12 у.е.
-пт: 28 у.е.
-сб: 16 у.е.
-вс: 18 у.е.
-пн: 6.666 у.е.
-вт: ... и т.д.

Вам дана информация об ожидаемой по плану прибыли в первый день запуска проекта, об ожидаемой по плану прибыли в последний день запуска проекта и количестве дней работы проекта. Считаем, что понедельник — всегда первый день запуска проекта. При помощи np.linspace и присваиваний в срез, найдите фактическую прибыль проекта с поправкой на продуктивность участников за каждый день работы проекта.

Формат ввода
В файле input.txt Вам даны три числа: прибыль (по плану) проекта в первый день (в понедельник), прибыль (по плану) проекта в последний день и количество дней.

Формат вывода
Выведите в файл output.txt массив, содержащий данные по ежедневной фактической прибыли. Прибыль за каждый день представляет собой вещественное число c точностью 2 знака после запятой, каждое число записывается в отдельной строке.

Пример
Ввод Вывод
10
50
5
3.33
20.00
30.00
40.00
100.00
Примечания
Обратите внимание, что в выходном файле нужно сохранять числа с точностью 2 знака после точки.
Во входных данных может быть больше одного понедельника и пятницы.
Не забывайте делать import numpy!
Значения прибыли проекта во входных данных могут быть нецелыми числами (вещественными).
Пятница - не всегда последний день. И она может быть не одна.
Проверяйте, что в выходных данных нет лишних пробелов.
Обратите внимание, что у функции numpy.linspace(start, end, len) первые 2 аргумента (start и end) - начало и конец списка - могут быть нецелыми. А вот третий аргумент - len
длина списка, должен быть целым числом.
Метод round() округляет так, что не оставляет нулей в конце. Например, round(5.101, 2) выдаст 5.1, хотя нужно выводить 5.10. Чтобы побороть эту проблему, можно отсекать лишние разряды в самом методе print() с помощью f-string: f'{x:.2f}'. Подробнее: см. рекомендации к вводу-выводу.

По дате
По рейтингу
Аватар пользователя
Просветленный
12345678
 import numpy as np
start, end, lenght = int(input()), int(input()), int(input())

profit = np.linspace(start, end, lenght)
mon, fri = np.ones(lenght), np.ones(lenght) 
mon[::7], fri[4::7] = 3, 2

for p in profit / mon * fri: print(f'{p:.2f}')