You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python OOP编写的银行类无法执行取款操作问题求助

问题原因

  • 键类型不匹配:存款方法中输入的账号x是字符串类型,直接作为self.accountNumber的键存储;但取款方法中把输入的账号转成了int类型再去字典中查找,两种类型的键无法匹配,会触发KeyError。
  • 金额类型错误:存款时输入的金额y没有转成数值类型,直接以字符串形式存入字典,取款时执行字符串减整数的操作会触发类型错误。
  • 存款逻辑错误:存款操作直接将输入金额赋值给对应账号,不是累加原有余额,多次存款会覆盖之前的余额数据。
  • 初始化参数冗余:__init__方法传入的accountNumber、totalBalance参数没有被使用,直接被初始化为空字典。
  • 缺少边界校验:没有判断账号是否存在、取款金额是否大于余额的逻辑,异常场景会直接报错。

修复方案

  1. 统一账号的存储和查询类型,选择统一用字符串兼容更多账号格式。
  2. 存款时将输入金额转为数值类型,首次存款直接赋值,非首次存款做累加。
  3. 取款前先校验账号是否存在、余额是否足够。
  4. 清理冗余的初始化参数。
class Bank:
    def __init__(self, name):
        self.name = name
        # 存储格式:{账号字符串: 余额数值}
        self.account_balance = {}

    def deposit(self):
        print("What is your account number?")
        account = input().strip()
        print("What balance are you depositing?")
        amount = float(input().strip())
        # 金额合法性校验
        if amount <= 0:
            print("Deposit amount must be greater than 0")
            return
        # 累加余额
        if account in self.account_balance:
            self.account_balance[account] += amount
        else:
            self.account_balance[account] = amount
        print(f"Current account balance: {self.account_balance[account]}")

    def withdraw(self):
        print("What is your account number?")
        account = input().strip()
        # 校验账号是否存在
        if account not in self.account_balance:
            print("Account does not exist")
            return
        print("What balance are you withdrawing?")
        amount = float(input().strip())
        # 校验金额合法性和余额是否充足
        if amount <= 0:
            print("Withdrawal amount must be greater than 0")
            return
        if self.account_balance[account] < amount:
            print("Insufficient balance")
            return
        # 扣减余额
        self.account_balance[account] -= amount
        print(f"Current account balance: {self.account_balance[account]}")

Bank1 = Bank("MONEYYYYY")
Bank1.deposit()
Bank1.withdraw()

内容的提问来源于stack exchange,提问作者VirtualSquares

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 13:15:03