【问题标题】:I can't add list in Class我无法在班级中添加列表
【发布时间】:2021-12-29 18:59:12
【问题描述】:

这是我的代码。其目标银行应用程序。我们输入用户的账号、姓名、余额。应用程序会做withdrawMoney、depositMoney、transferMoney。我正在尝试将 AccountNumbers 添加到列表中,并且我想在 transferMoney 条件下使用此列表。我应该在哪里以及添加什么代码。

class BankAccount:

    def __init__(self,accountNumber,name,balance) -> None:
        self.accountNumber = accountNumber
        self.name = name
        self.balance = balance
        print(f"Sayın {self.name} {self.accountNumber} Numaralı Hesabınızda {self.balance} TL Bulunuyor.")

    def withdrawMoney(self,balance):
        if self.balance - balance < 0:
            print(f"Sayın {self.name} {self.accountNumber} Numaralı Hesabınızda Yeterli Para Bulunmuyor {self.balance - balance}")
        else:
            self.balance -= balance
            return f"Sayın {self.name} {self.accountNumber} Numaralı Hesaptan {balance} TL Çekildi ; Kalan Para {self.balance}"
            
    def depositMoney(self,balance):
        self.balance = balance + self.balance
        return f"Sayın {self.name} {self.accountNumber} Adlı Hesabınıza {balance} TL Yüklenmiştir. Toplam Para {self.balance}"
        
    def transferMoney(self,yourAccountNumber,aimAccountNumber,balance):
        if yourAccountNumber and aimAccountNumber in []: 
            yourAccountNumber.balance -= balance
            aimAccountNumber.balance += balance

            print(f"Sayın {self.name} {self.accountNumber} Adlı Hesabınızda {self.balance} TL Kalmıştır")
        else:
            print("Yanlış Hesap Numarası Girildi")

           

a1 = BankAccount(1234,"Ahmet",5000)

a2 = BankAccount(3456,"Kerem",8000)

print(a1.transferMoney(1234,3456,1000))

【问题讨论】:

  • transferMoney 不应采用帐号,而应采用 BankAccount 对象。它应该是 self.withdrawMoney(balance) 然后 otherAccount.depositMoney(balance)
  • 如果您希望能够按编号查找帐户,您可以有一个包含将帐户编号映射到BanikAccount 对象的字典的类变量。 __init__() 方法会将帐户添加到字典中。

标签: python class oop methods


【解决方案1】:

创建一个列表来存储帐号:allBankAccounts = []

init 中将帐号附加到列表中:allBankAccounts.append(self.accountNumber)

将银行账户对象传递给 transferMoney 函数(不是帐号)。 a1.transferMoney(a2,1000)

您的 transferMoney 函数应如下所示:

def transferMoney(self,a2,balance):
    yourAccountNumber = self.accountNumber
    aimAccountNumber = a2.accountNumber

    if yourAccountNumber and aimAccountNumber in allBankAccounts: 
        self.withdrawMoney(balance)
        a2.depositMoney(balance)

        print(f"Sayın {self.name} {self.accountNumber} Adlı Hesabınızda {self.balance} TL Kalmıştır")
        print(f"{a2.name} balance: {a2.balance}")
    else:
        print("Yanlış Hesap Numarası Girildi")

所有代码:

class BankAccount:

def __init__(self,accountNumber,name,balance) -> None:
    self.accountNumber = accountNumber
    self.name = name
    self.balance = balance
    allBankAccounts.append(self.accountNumber)
    print(f"Sayın {self.name} {self.accountNumber} Numaralı Hesabınızda {self.balance} TL Bulunuyor.")

def withdrawMoney(self,balance):
    if self.balance - balance < 0:
        print(f"Sayın {self.name} {self.accountNumber} Numaralı Hesabınızda Yeterli Para Bulunmuyor {self.balance - balance}")
    else:
        self.balance -= balance
        return f"Sayın {self.name} {self.accountNumber} Numaralı Hesaptan {balance} TL Çekildi ; Kalan Para {self.balance}"
        
def depositMoney(self,balance):
    self.balance = balance + self.balance
    return f"Sayın {self.name} {self.accountNumber} Adlı Hesabınıza {balance} TL Yüklenmiştir. Toplam Para {self.balance}"
    
def transferMoney(self,a2,balance):
    yourAccountNumber = self.accountNumber
    aimAccountNumber = a2.accountNumber

    if yourAccountNumber and aimAccountNumber in allBankAccounts: 
        self.withdrawMoney(balance)
        a2.depositMoney(balance)

        print(f"Sayın {self.name} {self.accountNumber} Adlı Hesabınızda {self.balance} TL Kalmıştır")
        print(f"{a2.name} balance: {a2.balance}")
    else:
        print("Yanlış Hesap Numarası Girildi")


allBankAccounts = []

a1 = BankAccount(1234,"Ahmet",5000)

a2 = BankAccount(3456,"Kerem",8000)

a1.transferMoney(a2,1000)

【讨论】:

  • 这不正确:if yourAccountNumber and aimAccountNumber in allBankAccounts:应该是if yourAccountNumebr in allBankAccounts and aimAccountNumber in allBackAccounts:
  • 我相信我的很好
  • 您的代码只是检查yourAccountNumber 不为零,而不是检查它是否在allBankAccounts 中。
  • 检查代码伙伴,我的是正确的
  • 试试a1 = BankAccount(0, "Ahmet", 5000)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多