Python中如何在if语句中设置取款透支限额并修正逻辑错误?
修复取款逻辑中的条件判断错误
你的代码核心问题出在第14行的or max逻辑上——Python中非零数值会被视为True,max是余额加50的正数,所以这个条件永远成立,导致所有大于等于余额的取款请求都会进入第二个分支,第三个拒绝取款的分支永远不会触发。
要实现「取款金额最多超出余额50时允许透支,超出更多则拒绝」的需求,需要把第二个条件修改为取款金额大于余额且小于等于余额+50,同时保持合理的条件匹配顺序。
修正后的完整代码:
bal = input("What is your account balance?: ") intbal = int(bal) withdraw = input("How much would you like to withdraw?: ") intwith = int(withdraw) max_overdraw = intbal + 50 # 重命名变量,避免和Python内置函数max冲突 if intwith <= intbal: print() print("Withdrawal successful. Current balance: ", intbal - intwith) elif intbal < intwith <= max_overdraw: print() print("Withdrawal successful, the account is overdrawn. Current balance: ", intbal - intwith) elif intwith > max_overdraw: print() print("Withdrawal refused, insufficient funds. Current balance:", intbal) else: print("Invalid input")
关键修改说明:
- 把变量
max改为max_overdraw,避免和Python内置的max()函数重名,防止潜在的语法冲突 - 第二个elif条件改为
intbal < intwith <= max_overdraw,明确限定「取款金额大于余额,但不超过余额+50」的允许透支范围 - 保持条件顺序:先判断正常取款,再判断允许的透支场景,最后判断超出限额的拒绝请求,确保每个分支只会匹配对应的情况
内容的提问来源于stack exchange,提问作者21010
相关产品推荐
相关产品推荐

