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

如何避免用户重输入时使用多个独立while循环?Python优化问询

优化方案:封装重复逻辑简化代码

你的代码存在两处可以优化的点:一是重复的输入验证循环逻辑,二是使用eval()存在安全风险(它会执行用户输入的任意代码,可能引发安全问题),建议用float()来转换输入值。

推荐方案:封装通用输入函数

把重复的输入验证逻辑封装成一个函数,这样既能避免代码冗余,还能提升可读性和可维护性,同时加入异常处理应对非数字输入的情况:

def get_positive_input(prompt):
    while True:
        try:
            value = float(input(prompt))
            if value > 0:
                return value
            print("Invalid entry. Please enter a positive number.")
        except ValueError:
            print("Invalid entry. Please enter a valid number.")

# 调用函数获取身高和体重
height = get_positive_input("Please enter your height in inches: ")
weight = get_positive_input("Enter your weight in pounds: ")

可选方案:单循环处理两个输入(不推荐)

如果一定要合并成一个while循环,也可以实现,但逻辑会更复杂,可读性不如函数封装:

height = None
weight = None
while height is None or weight is None:
    # 处理身高输入
    if height is None:
        try:
            h = float(input("Please enter your height in inches: "))
            if h > 0:
                height = h
            else:
                print("Invalid entry.")
        except ValueError:
            print("Invalid entry. Please enter a valid number.")
    # 处理体重输入
    if weight is None:
        try:
            w = float(input("Enter your weight in pounds: "))
            if w > 0:
                weight = w
            else:
                print("Invalid entry.")
        except ValueError:
            print("Invalid entry. Please enter a valid number.")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 15:51:31