Решение Сохранение вашей логики :
Здесь я перебираю месяцы (как вы это делали, но здесь, используя 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")