如何在Python中用函数实现多输入整数验证以减少代码重复?
当然可以!用函数封装验证逻辑完美解决重复代码问题
作为Python新手,你能意识到重复代码的问题并想办法优化,这点非常棒!把重复的输入验证逻辑封装成一个可复用的函数,不仅能让代码更简洁,以后如果要调整验证规则(比如增加输入范围检查),也只需要修改一处代码就行。
重构后的完整代码
def get_integer_input(prompt): while True: try: return int(input(prompt)) except ValueError: print('The value you entered is not an integer') # 调用函数获取三个变量 no_of_month = get_integer_input('Enter no of months you want for payment: ') interest = get_integer_input('Enter interest you want for the loan: ') principal_amt = get_integer_input('Enter principal amount you want as loan: ') # 后续可以在这里编写房贷计算的逻辑
代码解释
- 封装验证函数:我们定义了
get_integer_input函数,它接收一个prompt参数(就是要显示给用户的输入提示文本)。函数内部把你原来重复的while+try-except逻辑整合在一起,当用户输入有效整数时,直接返回这个值;如果输入无效,就提示错误并继续循环等待正确输入。 - 调用函数:现在只需要三次调用这个函数,分别传入对应的提示文本,就能得到经过验证的三个变量,代码一下子清爽了很多!
如果之后你想扩展验证规则(比如要求输入的月份不能小于12,利息不能是负数),只需要在函数里加几行判断逻辑就行,比如:
def get_integer_input(prompt, min_value=None): while True: try: value = int(input(prompt)) if min_value is not None and value < min_value: print(f'Please enter a value greater than or equal to {min_value}') continue return value except ValueError: print('The value you entered is not an integer') # 调用时指定最小值 no_of_month = get_integer_input('Enter no of months you want for payment: ', min_value=12)
这样你的代码会更健壮,也更易于维护~
内容的提问来源于stack exchange,提问作者topsy coder




