Python 多输入Try Except校验优化 贷款还款计算代码精简方案
代码优化方案
你可以将重复的输入校验逻辑封装为通用函数,一次编写多次调用,既能避免每个输入单独写try except的冗余,也能保证输入错误时停留在当前步骤重试。
优化后代码如下:
def get_valid_num(prompt, convert_type, post_handler=None): err_tip = "Please enter a number only!!" while True: try: val = convert_type(input(prompt)) return post_handler(val) if post_handler else val except ValueError: print(err_tip) # 依次获取三个校验后的输入 A = get_valid_num("How much were you loaned? ", int) R = get_valid_num("At what monthly rate interest? ", float, post_handler=lambda x: x/100) N = get_valid_num("And how many years is the loan for? ", int) # 计算还款额 RA = R * A RN = 1 - (1 + R) ** -N yearly_pay = RA / RN print(f"You will pay £{yearly_pay:.2f} yearly, or £{yearly_pay/12:.2f} monthly")
优化效果说明
- 所有输入校验逻辑集中在一处,后续修改错误提示、新增校验规则只需修改通用函数即可,维护成本极低
- 单个输入出错时只会停在当前输入步骤循环提示,不会回到第一个输入重新填写,完全符合需求
- 相比原重复编写三套循环的代码,整体代码量减少近40%,结构清晰易读
内容的提问来源于stack exchange,提问作者Mr Noodles
相关产品推荐
相关产品推荐

