Как исправить: Глобальная переменная обновляется во всех функциях, кроме одной - PullRequest
0 голосов
/ 29 октября 2019

Создание небольшого, простого программного обеспечения, похожего на банкомат. Я сделал функции для различных действий доступными. Однако в выводе моя глобальная переменная «баланс» не обновляется. Ниже приведен соответствующий фрагмент кода.

После некоторого тестирования я понял, что значение понимается как изменяющееся внутри функции, так как при внесении значения я могу вывести сумму, превышающую начальный баланс. Это означает, что переменная обновляется как минимум для функций.

global menu
balance = float(input("Please enter your current balance: "))
menu = "Current balance is: {}\n Press 1 to withdraw\n Press 2 to deposit\n Press 3 to exit".format(balance)
def display():
    global choice
    global balance
    print(menu)
    choice = input("Please select a number: ")
    return balance
def deposit():
    global balance
    global choice
    amount_dep = float(input("Please enter the amount you'd like to deposit: "))
    balance += amount_dep
    return "Your current balance is{}".format(balance)
def withdraw():
    global balance
    global choice
    amount_with = float(input("Please enter the amount you'd like to withdraw: "))
    if amount_with > balance:
        print("Sorry, but your balance is less than the amount you'd like to withdraw.")
    else:
        balance -= amount_with
        return "Your current balance is{}".format(balance)
while finished == False:
    display()
    global choice
    if choice == '1':
        withdraw()
    elif choice == '2':
        deposit()
    elif choice == '3':
        finished = True
        print("Thank you for using our service.")
    else:
        print("You entered an invalid number, please retry")

Таким образом, все выходные данные являются регулярными, за исключением значения сальдо.

1 Ответ

0 голосов
/ 29 октября 2019

Когда вы определяете переменное меню в верхней части кода, вы определяете его с начальным балансом. Когда вы распечатываете меню после внесения или снятия, программа отображения все еще печатает меню, определенное с начальным балансом.

Возможно, вы работаете над заданием, в котором предполагается использовать глобальные переменные, но это нене похоже на отличный вариант использования. Ваша функция возврата возвращает строку с указанием вашего текущего баланса, но вы его не используете. Вы можете также легко вызвать функцию отзыва с помощью balance = withdraw(balance) и рассматривать остаток как аргумент и возврат. В любом случае, продолжайте работать и продолжайте учиться!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...