Вывод всех элементов словаря при передаче в функцию

При передаче словаря в функцию выводится только первый элемент ключ- значение. Как вывести остальные?

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} руб. успешно применена.")
  1. Необходимости дополнительно возвращать словарь транзакций в вашем случае нет.
  2. Функцию лучше всё же вынести за цикл while True, как я и предполагал в комментарии к вопросу.
  3. Кажется, у вас есть проблемы с базовым пониманием концепции циклов. Думаю, стоит дополнительно изучить, как в целом работают циклы на итерируемых объектах. К примеру, вы запускаете цикл по i, но не используете эту переменную в цикле, а вместо этого используете какие-то внешние переменные sum_transaction и name_transaction. И цикл фактически отработал вхолостую.
  4. По-хорошему, если рассматривать бизнес-логику, вам стоит перейти на списки, потому что хранение транзакций в словарях, как отметил Сергей в комментариях, может привести к потере данных, если две транзакции будут на одну и ту же сумму.
→ Ссылка