在Jupiter Notebook中工作的脚本在IDE中无法正常工作

时间:2019-02-07 08:20:32

标签: python jupyter-notebook

我已经在Jupiter Notebook中完成了一个熟悉的初学者Python项目(银行帐户,结余-您都会立即意识到),并且可以完美运行。在Jupiter Notebooks中,当进行存款和/或提款时,余额会更新。我想用带有代码的GUI制作应用程序,但是在我的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)一样在木星笔记本中。但这不会发生。余额保持在200(初始余额100加上100存款)不变。

我在做什么错了?

安德烈

2 个答案:

答案 0 :(得分:0)

在Jupyter笔记本中,您将在一个单元格上声明class Account,并在另一个单元格上使用cust1.deposit(100)。在Jupyter笔记本电脑中,您可以单独执行部分代码,使您可以多次运行cust1.deposit(100),因此每次的余额都在增加。但是在IDE中,您不能多次执行一部分代码。运行该代码时,将执行整个代码,这意味着将余额初始化为100,并在调用cust1.deposit(100)时将其增加100。因此,无论您运行多少次,您都会看到200的余额。

答案 1 :(得分:0)

您的代码可以正常工作。问题在于,当您直接从IDE直接运行python脚本时,它仅运行一次,但是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