如何在Python银行账户类的存取款方法中添加非法金额输入校验逻辑
实现金额输入校验的方案
核心是通过try-except捕获输入转float时的异常,再搭配循环保证用户输入合法后才执行后续业务逻辑,同时可额外补充正金额校验,避免输入负数等不符合业务规则的内容。
修改后的完整代码
class BankAccount: def __init__(self): self.balance = 0 print("您好,欢迎使用存取款ATM机") def deposit(self): while True: input_content = input("请输入要存入的金额:") try: amount = float(input_content) # 校验金额必须为正数 if amount <= 0: print("输入无效,请输入大于0的金额") continue break except ValueError: print("输入无效,请输入合法的数字金额") self.balance += amount print(f"\n已成功存入金额:{amount}") def withdraw(self): while True: input_content = input("请输入要取出的金额:") try: amount = float(input_content) if amount <= 0: print("输入无效,请输入大于0的金额") continue break except ValueError: print("输入无效,请输入合法的数字金额") if self.balance >= amount: self.balance -= amount print(f"\n已成功取出金额:{amount}") else: print("\n余额不足,无法完成取款")
改动说明
- 新增了无限循环逻辑:用户输入不合法时会反复提示重新输入,直到获取到符合要求的金额才会执行后续的存取款操作
- 通过
try-except捕获ValueError异常:当输入包含字母、特殊符号、格式错误的数字时,转float会触发该异常,此时返回友好提示 - 补充了金额有效性校验:过滤了0、负数这类不符合存取款业务逻辑的输入,避免业务异常
内容的提问来源于stack exchange,提问作者Eh4413
相关产品推荐
相关产品推荐

