我已经在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存款)不变。
我在做什么错了?
安德烈
答案 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