Не могу понять как написать код в питоне
Дан список выручки по датам
а = {'01.12.22': 12000, '02.12.22': 14500, '03.12.22': 18542' и тд}
Нужно написать функцию summa и на выходе получить даты через запятую, в которые выручка составила менее суммы, которую указал пользователь.
Вывод должен выглядеть так: (f'Список дней, в которые заработали менее {sum} рублей: {summa(sum)}')
Код который мучал я:
def summa(sum):
k = a.keys()
count = 0
for date in a:
for i in a:
if i[date] > sum:
count += 1
return k
Ответы (3 шт):
Автор решения: Dmitriy Zubov
→ Ссылка
Если я вас правильно понял, то вот решение вашей проблемы
dict_ = {'01.12.22': 12000, '02.12.22': 14500, '03.12.22': 18542} # ваш словарь
s = int(input('Ввод суммы пользователем: ')) # вводим сумму
def summa(d, s):
answer = [0] # результативный массив. 0 - место, в котором будет собираться сумма
for key, value in d.items(): # проходим по всем элементам массива (ключам и их значениям)
if value < s: # если попали под ваше условие
answer[0] += value # увеличиваем на эту сумму нулевое значение
answer.append(key) # добавляем эту дату
return answer
array = summa(dict_, s)
print(f'Список дней, в которые заработали менее {s} рублей: {array[0]}')
print(array[1:]) # вывод массива со срезом собранной суммы
Автор решения: MarianD
→ Ссылка
def summa(receipts, limit):
total = 0
days = []
for date, value in receipts.items():
if value < limit:
total += value
days.append(date)
return days, total
# Тест с каким-то словарем и каким-то пределом
a = {'01.12.22': 10_000, '02.12.22': 20_000,
'03.12.22': 40_000, '04.12.22': 30_000}
days, total = summa(a, 35_000)
print(f"{days}: {total}")
Вывод:
['01.12.22', '02.12.22', '04.12.22']: 60000
Автор решения: Vladimir Bogdanov
→ Ссылка
Если требуется просто вывести список дат, то можно через генераторное выражение:
a = {'01.12.22': 10_000, '02.12.22': 20_000,
'03.12.22': 40_000, '04.12.22': 30_000}
sum = 35000
g = (k for k, v in a.items() if v < sum)
print(f'Список дней, в которые заработали менее {sum} рублей:{list(g)}')
Либо в виде ленивой функции:
def get_date_list(d: dict, s):
for k, v in d.items():
if v < s:
yield k
print(f'Список дней, в которые заработали менее {sum} рублей: {list(get_date_list(a, sum))}')