Вывод всех элементов словаря при передаче в функцию
При передаче словаря в функцию выводится только первый элемент ключ- значение. Как вывести остальные?
if operation_number == 7: # применение транзакции
def use_transactions(trans):
for i in range(len(trans)):
if sum_transaction > limit_sum:
print("Транзакция " + name_transaction + " на сумму " + str(int(sum_transaction)) + " руб. не может быть"
" применена (превышен лимит).")
else:
print("Транзакция " + name_transaction + " на сумму " + str(sum_transaction) + " руб. успешно применена.")
return trans
use_transactions(trans)
Ответы (1 шт):
Автор решения: PaveTranquil
→ Ссылка
def use_transactions(trans):
for ta_sum in trans:
if ta_sum > limit_sum:
print(f"Транзакция {trans[ta_sum]} на сумму {ta_sum} руб. не может быть применена (превышен лимит).")
else:
print(f"Транзакция {trans[ta_sum]} на сумму {ta_sum} руб. успешно применена.")
- Необходимости дополнительно возвращать словарь транзакций в вашем случае нет.
- Функцию лучше всё же вынести за цикл
while True
, как я и предполагал в комментарии к вопросу. - Кажется, у вас есть проблемы с базовым пониманием концепции циклов. Думаю, стоит дополнительно изучить, как в целом работают циклы на итерируемых объектах. К примеру, вы запускаете цикл по
i
, но не используете эту переменную в цикле, а вместо этого используете какие-то внешние переменныеsum_transaction
иname_transaction
. И цикл фактически отработал вхолостую. - По-хорошему, если рассматривать бизнес-логику, вам стоит перейти на списки, потому что хранение транзакций в словарях, как отметил Сергей в комментариях, может привести к потере данных, если две транзакции будут на одну и ту же сумму.