如何无需新增判断分支,让代码适配任意银行账户执行相同操作?
优化银行账户操作代码:无需新增判断分支处理任意账户
我写了一段模拟银行余额查询的Python代码,输入账号就能输出对应账户余额。但现在的问题是,每新增一个账户就得手动加一条判断分支(示例代码如下),账户多了根本不实用。怎么改才能不用为每个账户加判断,就能对任意账户执行相同操作?
原代码示例:
print("welcome to bank!\n") bank = { "sam": [1234, 150], "bob": [1235, 250], } print("please select an action:\n") print( "1. check balance \n2. withdraw money \n3. deposit money \n4. exit\n" ) action = int(input("selected action:")) accnuminput = int(input("please enter account number:")) if action == 1: if accnuminput == (bank["sam"][0]): print(bank["sam"][1])
此前新增账户的冗余写法:
if accnuminput == (bank["sam"][0]): print(bank["sam"][1]) if accnuminput == (bank["bob"][0]): print(bank["bob"][1])
优化方案
核心思路是避免逐个编写判断分支,通过遍历或优化数据结构直接定位账户,以下是两种实用方法:
方法1:遍历字典查找对应账号
不用写多个if,直接遍历字典中的所有账户信息,匹配输入的账号后执行操作。新增账户时只需往bank字典里加键值对,无需修改操作逻辑。
print("welcome to bank!\n") bank = { "sam": [1234, 150], "bob": [1235, 250], } print("please select an action:\n") print( "1. check balance \n2. withdraw money \n3. deposit money \n4. exit\n" ) action = int(input("selected action:")) accnuminput = int(input("please enter account number:")) if action == 1: # 遍历所有账户信息,匹配账号 for user_info in bank.values(): if user_info[0] == accnuminput: print(f"账户余额:{user_info[1]}") break else: # 遍历完没找到匹配账号 print("未找到该账户!")
方法2:优化字典结构(推荐)
把字典的键改成账号,值存储用户名和余额的组合。这样输入账号后可以直接通过键访问账户信息,无需遍历,效率更高,新增账户也只需添加新的键值对。
print("welcome to bank!\n") # 优化结构:账号作为键,值为[用户名, 余额] bank = { 1234: ["sam", 150], 1235: ["bob", 250], } print("please select an action:\n") print( "1. check balance \n2. withdraw money \n3. deposit money \n4. exit\n" ) action = int(input("selected action:")) accnuminput = int(input("please enter account number:")) if action == 1: # 直接通过账号查找账户 account = bank.get(accnuminput) if account: print(f"{account[0]}的账户余额:{account[1]}") else: print("未找到该账户!")
两种方案对比
- 方法1适合不想改动原有数据结构的场景,逻辑简单,但账户数量较多时遍历效率略低。
- 方法2是更高效的方案,代码简洁,新增账户只需执行
bank[新账号] = [用户名, 余额],完全不需要修改操作逻辑,扩展性更强。
内容的提问来源于stack exchange,提问作者novaminer66
相关产品推荐
相关产品推荐

