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

银行账户系统新增账户功能异常:重复账号校验失效求助

银行账户重复添加问题的排查与修复

问题根源

你代码里的账号重复检查逻辑完全失效,原因在于这段循环:

counter = 0
for each in banklist:
  addcounter = counter + 1

这里counter始终保持为0,addcounter只是一个临时变量,根本没起到遍历索引的作用。最后你只对比了banklist[counter](也就是列表第一个元素,账号34),所以当输入已存在的第二个账号23时,代码会错误判定为“不存在”,从而允许重复添加。

修复方案

替换新增账户模块的重复检查逻辑,改为遍历所有账户逐一验证:

elif optionselect == "2":
   while True:
    try:
     accountBalance = 0
     accountnumber = int(input("\nWhats the account number you would like to use?: "))
     # 检查账号是否已存在
     duplicate = False
     for account in banklist:
         if account.accountnumber == accountnumber:
             duplicate = True
             break
     if duplicate:
         print("\nSomeone already took that number please enter another one. ")
         continue
     # 不存在则添加新账户
     banklist.append( Bank_Account(accountnumber, accountBalance) )
     print("\nalright your good added the number to the system. :D")
     break
    except ValueError:
      print("\nPlease enter a valid number.")

修复说明

  1. 新增duplicate标记变量,初始为False
  2. 遍历banklist中的每一个账户,对比输入的账号与现有账号
  3. 一旦找到重复账号,将duplicate设为True并终止循环
  4. 根据duplicate的值决定提示重复,还是添加新账户
  5. 把通用except改为except ValueError,避免捕获无关异常

额外优化建议

  • addorminusmoneyintoaccount方法依赖全局变量userdeporwithinput,改为传入参数更合理:
    def addorminusmoneyintoaccount(self, amount):
      self.__accountbalance += amount
    
  • 可以用字典存储账户(以账号为键),这样检查重复的效率更高,无需遍历整个列表:
    bank_dict = {34: Bank_Account(34, 0), 23: Bank_Account(23, 0)}
    # 检查重复只需判断if accountnumber in bank_dict:
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 23:57:10