银行账户系统新增账户功能异常:重复账号校验失效求助
银行账户重复添加问题的排查与修复
问题根源
你代码里的账号重复检查逻辑完全失效,原因在于这段循环:
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.")
修复说明
- 新增
duplicate标记变量,初始为False - 遍历
banklist中的每一个账户,对比输入的账号与现有账号 - 一旦找到重复账号,将
duplicate设为True并终止循环 - 根据
duplicate的值决定提示重复,还是添加新账户 - 把通用
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
相关产品推荐
相关产品推荐

