Скрипт, который работает в Jupiter Notebook, не работает должным образом в IDE - PullRequest
0 голосов
/ 07 февраля 2019

Я выполнил знакомый проект Python для начинающих (банковский счет, текущий баланс - вы все сразу его узнаете) в Jupiter Notebook, и он отлично работает.В Jupiter Notebooks баланс обновляется при внесении и / или снятии средств.Я хочу сделать приложение с графическим интерфейсом с кодом, но он не работает в моей IDE (IDLE).

Я скопировал код в IDLE, чтобы он выглядел так, как показано ниже:

class Account():
    def __init__(self, owner, balance):
        self.owner = owner
        self.balance = balance

    def __str__(self):
        return("Account holder: {}\nBalance R".format (self.owner, self.balance))

    def deposit(self, dep_amt):
        self.balance = self.balance + dep_amt


    def withdraw(self, with_amt ):
        if self.balance >= with_amt:
            self.balance = self.balance - with_amt
        else:
            print("insufficient funds")

cust1 = Account("Hernandez, Jose", 100.00)


print("\n", cust1)


cust1.deposit(100.00)
# cust1.withdraw(300.00)


print("\nAccount Holder: ", cust1.owner)
print("Account Balance: R", float(cust1.balance))

Я бы подумал, что если скрипт запускается подряд, "cust1.deposit (100)"будет срабатывать каждый раз, и баланс будет увеличиваться на 100, как это происходит, когда я несколько раз запускаю cust1.deposit (100) в блокноте Jupiter Notebook.Но этого не происходит.Баланс остается неизменным на уровне 200 (первоначальный баланс 100 плюс депозит 100).

Что я делаю не так?

Андре

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

Ваш код работает как задумано.Проблема в том, что когда вы запускаете скрипт Python непосредственно из IDE, он запускается только один раз, но Jupyter Notebook работает по-другому.Когда вы запускаете строку своего кода в Jupyter, результат этого действия запоминается в том, что я могу описать только как «сессия Python».Причина, по которой баланс равен 300, заключается в том, что вы, вероятно, запускали ячейку с cust1.deposit(100.00) два раза.Если вы хотите сделать это в скрипте, вы должны выполнить одну и ту же команду два раза:

cust1 = Account("Hernandez, Jose", 100.00)
cust1.deposit(100.00)
cust1.deposit(100.00)
print("\n", cust1)
# will print balance with value of 300.00
0 голосов
/ 07 февраля 2019

В блокноте Jupyter вы бы объявили class Account в одной ячейке и использовали бы cust1.deposit(100) в другой ячейке.В блокноте Jupyter вы можете по отдельности выполнить часть своего кода, что позволит вам запускать cust1.deposit(100) несколько раз, следовательно, баланс увеличивается с каждым разом.Но в IDE вы не можете выполнить часть кода несколько раз.Когда вы запускаете его, весь код выполняется, что означает, что баланс инициализируется до 100 и увеличивается на 100 один раз, когда вызывается cust1.deposit(100).Следовательно, вы видите баланс 200 независимо от того, сколько раз вы его запускаете.

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