Добавить на основе другой ссылки - PullRequest
1 голос
/ 30 июня 2019

Мне разрешено использовать Numpy для этой задачи.

Мне нужно показать общий объем продаж за месяц в двух списках: даты и продажи.

Мой подход заключается в составлении спискавсе продажи в течение месяца путем удаления месяца с даты, создания 2D-матрицы и добавления значений, которые проверяют каждый месяц.

import numpy as np

dates = ["02/01/19", "03/02/19"]
sales = ["10.50", "12.20"]
month = [x.strip("0").split("/")[0] for x in dates]
monthsales = np.vstack((month, sales)).astype(np.float)

def monthlysales():
    jan = []
    for i in monthsales[0, 0:]:
        if i == 1:
            jan.append()
    s = input("Pick month: ")
    if s == "1":
        print("Sales total for Jan is:", np.sum(jan), "USD")
    else:
        print("Not a valid month")
    return
print(monthsales)
print(monthlysales())

Проблема в том, что я не знаю, что добавить, чтобы он занялвторая строка моей матрицы, которая будет завершать код

1 Ответ

0 голосов
/ 30 июня 2019

Решение Сохранение вашей логики :

Здесь я перебираю месяцы (как вы это делали, но здесь, используя enumerate), и ищу, когда месяц равен 1. Использование enumerate позволяет нам узнать номер столбца, когда месяц равен 1 (id). Тогда нужно просто добавить продажи (строка 1) в интересующий нас месяц (id)

import numpy as np

dates = ["02/01/19", "03/02/19"]
sales = ["10.50", "12.20"]
month = [x.strip("0").split("/")[0] for x in dates]
monthsales = np.vstack((month, sales)).astype(np.float)

def monthlysales():
    jan = []
    # Loop over months with enumerate
    for id, month in enumerate(monthsales[0]):
        if month == 1:
            # Append sales (row 1) at column id
            jan.append(monthsales[1, id])
    s = input("Pick month: ")
    if s == "1":
        print("Sales total for Jan is:", np.sum(jan), "USD")
    else:
        print("Not a valid month")

print(monthsales)
print(monthlysales())

Конечно, поскольку вам разрешено использовать numpy, вы могли бы вообще избежать циклов. Рассмотрим следующую строку:

monthsales[1, monthsales[0] == 1].sum()

Это суммирует продажи за все месяцы января в одной строке. Нет петель. Для любого разумного количества данных это будет значительно быстрее, чем решение с enumerate.

Больше похоже на ваше первоначальное решение:

def monthlysales():
    s = int(input("Pick month: "))
    if s >= 1 and s <= 12:
        monies = monthsales[1, monthsales[0] == s].sum()
        print("Sales total for month {} is {} USD".format(s, monies))
    else:
        print("Not a valid month")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...