如何避免用户重输入时使用多个独立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
相关产品推荐
相关产品推荐

