如何指定从特定try块继续执行?Python输入验证问题
BMI计算程序输入逻辑优化
问题场景
原代码在体重输入格式错误时,会重新回到身高输入环节,但身高已输入正确,需要调整为仅重新要求输入体重,同时将所有提示文本改为中文。
原代码
while True: try: height_input=input(f"Please enter your height in meters : ") height=float(height_input) # weight_input=input(f"Please enter your weight in kilograms") except ValueError: print("Invalid Input. Please Try Again") continue try: weight_input=input(f"Please enter your weight in kilograms") weight=float(weight_input) except ValueError: print("Invalid Input. Please Try Again") continue try: bmi=weight/(height*height) print(round(bmi,2)) finally: break
修改后的代码
# 先获取正确的身高输入 while True: try: height_input = input("请输入您的身高(单位:米):") height = float(height_input) break # 身高输入正确,退出循环 except ValueError: print("输入无效,请重新输入") # 获取正确的体重输入,仅在错误时重新输入体重 while True: try: weight_input = input("请输入您的体重(单位:千克):") weight = float(weight_input) break # 体重输入正确,退出循环 except ValueError: print("输入无效,请重新输入") # 计算并输出BMI bmi = weight / (height * height) print(f"您的BMI指数为:{round(bmi, 2)}")
关键修改点
- 拆分输入循环:将身高和体重的输入逻辑拆分为两个独立的
while循环,确保身高输入正确后不再重复触发该环节,体重输入错误时仅在自身循环内重试。 - 中文提示文本:将所有输入提示和错误提示替换为中文表述,适配国内用户使用习惯。
- 简化逻辑结构:移除不必要的嵌套
try块,让代码逻辑更清晰,便于后续维护。
内容的提问来源于stack exchange,提问作者Vernita
相关产品推荐
相关产品推荐

