【问题标题】:Trying to create a checking account class but running into issues尝试创建支票账户类但遇到问题
【发布时间】:2020-07-13 02:20:06
【问题描述】:

编写一个名为“CheckingAccount”的类,其中包含当前 账户余额(int)和以下方法:

  • init - 采用“balance”参数来初始化对象的数据(余额)。请记住,方法 init 实现为 ___init__.

  • withdraw - 接受输入参数“amount”并通过减少余额来修改数据。如果“金额”导致透支,减去 额外的20美元。这个方法应该返回余额。

  • deposit - 接受输入参数“amount”并通过将余额增加“amount”来修改数据。

我正在尝试解决上述问题,但我有点迷茫,这是我迄今为止最好的(今天更新了代码):

# write your code here
class CheckingAccount:
    balance = 0
    amount = 0
    
    def __init__(self, balance = 0):
        self.balance = balance
        
    def withdraw(self, amount = 0):
        if self.amount > self.balance:
            self.balance -= 20
        else:
            self.balance -= 1
    def deposit(self, amount = 0):
        self.amount += amount
        return amount
        
an = CheckingAccount(80)
an.withdraw(40)
print("Your old balance was {}. Your new balance is now {}.".format(an.balance))

我越来越接近了,但我的旧余额显示为 79 而不是 80,而我的新余额显示为 0,而我认为我预期的是 40。我觉得我错过了一些东西。

【问题讨论】:

  • 是的,看起来不错,您只需要接受取款和存款方式的参数即可。
  • 这似乎是一个功课问题,请阅读this。对于您的问题,您走在正确的轨道上。请注意,withdrawdeposit 采用输入参数。 self 对于类方法是必需的,因此您需要为这些方法提供第二个参数,即取款或存款的金额
  • 然后你可以创建最后一个方法,我们称之为getBalance,它会返回当前余额,你可以打印出来,做一些测试
  • @totok。我读了帖子。我明白你的观点。这就是为什么我尽我所能编写代码然后寻求帮助的原因。我不希望任何人完全为我做这个问题。 OOP 从来都不是我的强项,通过这里获得帮助比通过我的导师获得帮助要快。但我确实尽我所能解决问题,以免给这里的其他程序员造成负担。这就是我发布这篇文章的理由。
  • @runner16 是的,没问题,这就是为什么我对你的工作发表评论,你做得很好;)我只是将它发送给任何寻求家庭作业帮助的人作为预防措施。你实现了你想要的吗?

标签: python oop


【解决方案1】:
class CheckingAccount:
    balance = 0
    oldbalance = 0
    #amount = 0
   
    def __init__(self, balance = 0):
        self.balance = balance
       
    def withdraw(self, amount = 0):
        self.oldbalance = self.balance
        if amount < self.balance:
            self.balance -= amount
            print("Amount withdrawn {}".format(amount))
        else:
            self.balance -= amount + 20
            print("Amount withdraw ${} with penalty of $20".format(amount))
        
    def deposit(self, amount = 0):
        self.oldbalance = self.balance
        self.balance += amount
        return amount
       
an = CheckingAccount(80)
an.withdraw(10)
print("Your old balance was {}. Your new balance is now {}.".format(an.oldbalance, an.balance))

【讨论】:

  • @totok,抱歉耽搁了。我收到了教授的回复。就你的观点而言,我没有尝试撤回 20 的原因。如果有人像在现实世界中那样透支,我试图增加 20 的罚款。我的代码不是那样出来的。 :/ 我能够从他那里得到帮助,这就是我得到的非常简洁的代码。不过,我非常感谢您的帮助!
猜你喜欢
  • 2022-08-02
  • 1970-01-01
  • 1970-01-01
  • 2016-09-22
  • 1970-01-01
  • 1970-01-01
  • 2022-07-15
  • 2015-05-11
  • 1970-01-01
相关资源
最近更新 更多