You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python食谱转换器:如何封装整数输入校验为自定义函数?

食谱程序整数输入校验的封装方案

首先得明确:你想要的amount = int(input(...)); check_int(amount)调用方式有个小问题——如果用户输入非整数,int(input(...))会直接抛出ValueError,根本走不到check_int那一步。所以更实用的做法是把输入、校验、循环重试整个逻辑封装成函数,彻底消除重复代码。

推荐方案:封装完整的输入校验函数

这个函数接收提示文本,内部自动处理输入合法性检查,直到用户输入有效整数:

def get_valid_int(prompt):
    while True:
        try:
            return int(input(prompt))
        except ValueError:
            print("这不是有效的整数,请重新输入。")

调用示例

在你的程序里直接用就行,完全替代重复的代码块:

amount = get_valid_int(f"Enter in the amount for {ingredient}: ")

如果你坚持要单独的校验函数(不推荐)

如果一定要实现check_int(amount)的形式,这个函数只能用于验证已经转换好的数值,但没法避免输入阶段的异常处理,重复代码还是存在:

def check_int(value):
    if not isinstance(value, int):
        raise ValueError("输入不是整数")

调用方式(仍需写循环和异常捕获)

while True:
    try:
        amount = int(input(f"Enter in the amount for {ingredient}: "))
        check_int(amount)
        break
    except ValueError:
        print("这不是有效的整数,请重新输入。")

这种方式没减少多少重复代码,所以还是推荐第一种方案。

额外扩展:支持食谱常用的小数用量

食谱里经常会用到小数(比如1.5勺、0.5杯),如果需要支持浮点数,可以把函数改成这样:

def get_valid_number(prompt):
    while True:
        try:
            return float(input(prompt))
        except ValueError:
            print("这不是有效的数字,请重新输入。")

这样既支持整数,也支持小数,更贴合食谱换算的实际需求。

内容的提问来源于stack exchange,提问作者Alec Smith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 21:27:36