Значение локальной переменной '.........' не используется

Артем(Ш)

Новичок
Пользователь
Апр 14, 2021
4
0
1
Нужна помощь) начинаю только разбираться в программировании. Сейчас вот занимаюсь небольшим созданием кода что то вроде электронного кошелька. Есть основная функция, внутри которой есть цикл, в котором вызываются другие функции. Так вот, в main функции есть переменные баланс int, и history list, они пустые, в них сохраняется история транзакций и введение средств или их снятие. Проблема в том, что история сохраняется, а баланс остается прежним нулевым. Я никак не могу понять как в эту переменную записать то, что вводится в другой функции. Заранее спасибо.

Python:
HELP_STRING = """
        Кошелек:

          добавить/отнять средства
          посмотреть баланс
          посмотреть последние 10 транзакций
          выйти из программы по команде
          распечатать список доступных команд (справка)

        """
HELP = "help"
EXIT = "exit"
BALANCE = "balance"
HISTORY = "history"
PUT = "put"
TAKE = "take"


def print_message(message):
    print(message)


def print_help():
    print_message(HELP_STRING)


def print_buy_message():
    print_message("Thanks, see you")


def print_balance(money):
    print_message("Your balance is " + str(money))


def print_history(history: list):
    for record in history:
        print_message(record)


def put_money(command, balance, history):
    print_message("Thank you, money has arrived")
    com, val, *_ = command.split()
    balance = balance + int(val)
    history.append(f"\t + {val}")


def take_money(command, history, balance: int):
    print_message("Wish you were withdrawing money again")
    com, val, *_ = command.split()
    balance = balance - int(val)
    history.append(f"\t - {val}")


def print_number():
    print("Please enter the correct command")


def run_app():

    balance = 0
    history = []

    while True:
        command = input("Enter command, please:")
        command = command.lower()
        if command == HELP:
            print_help()
        elif command == EXIT:
            print_buy_message()
            break
        elif command == BALANCE:
            print_balance(money=balance)
        elif command == HISTORY:
            print_history(history)
        elif command.startswith(PUT):
            put_money(command, balance, history)
        elif command.startswith(TAKE):
            take_money(command, history, balance)
        elif command.isnumeric():
            print_number()
        else:
            print(f"Enter the appropriate command below")
            print_help()


run_app()
 
Последнее редактирование:

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 569
456
83
у вас баланс находиться в области видимости функции run_app, поэтому она не меняется...
вынесите ее из функции и сделайте глобальной, либо возвращайте баланс из других функций, в которых вы делаете операции с этой переменной...
 
  • Мне нравится
Реакции: Vershitel_sudeb

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 569
456
83
ваш код чет не работает... про отступы мне какие то говорит...

P.S.
как задать вопрос
 

Артем(Ш)

Новичок
Пользователь
Апр 14, 2021
4
0
1
конечно это просто я скопировал и вставил, а отступы есть конечно)
 

Вложения

  • 1.jpg
    1.jpg
    120,4 КБ · Просмотры: 2

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 569
456
83
мне перепечатывать? и отступы расставлять?

как задать вопрос
 

Артем(Ш)

Новичок
Пользователь
Апр 14, 2021
4
0
1
как я могу сюда загрузить сам ру файл?
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 569
456
83
как задать вопрос
по этой ссылке есть инструкция, как вставить код сюда с помощью тегов, ваш файл мне не нужен...
 

Артем(Ш)

Новичок
Пользователь
Апр 14, 2021
4
0
1
спасибо, все переделал
 

Форум IT Специалистов