Python中出现ValueError: invalid literal for int() with base 10: '1.66'问题求助
女性每日卡路里计算代码错误修复
错误原因
报错ValueError: invalid literal for int() with base 10: '1.66'是因为获取身高时用int()转换输入,但输入了带小数的数值(比如1.66),int()无法解析包含小数点的字符串,导致转换失败。
修复步骤及优化点
- 修复身高转换问题:将
height = int(input(...))改为height = float(input(...)),允许输入带小数的身高值(比如166.5cm或1.66m,根据实际单位调整逻辑即可)。 - 修复年龄类型问题:
age变量仅用input()接收会保留字符串类型,后续计算时会报错,需转换为数字类型,比如age = int(input(...))。 - 处理输入空格问题:用户输入活动等级时可能带前后空格,导致判断不匹配,需用
strip()去除空格,比如activity_level = input(...).strip()。 - 优化异常分支逻辑:原代码else分支直接输出
very_active,若用户输入错误的活动等级会默认按高活动量计算,建议添加提示信息。
修复后的完整代码
# 女性每日所需卡路里计算 weight = float(input("请输入你的体重(kg):")) height = float(input("请输入你的身高:")) age = int(input("请输入你的年龄:")) activity_level = input("请输入你的活动水平:(轻度活跃、中度活跃、高度活跃)").strip() # 基础代谢率计算公式 bmr = 655.1 + (weight * 9.563) + (height * 1.850) - (age * 4.676) lightly_active = bmr * 1.375 moderately_active = bmr * 1.55 very_active = bmr * 1.9 if activity_level == "轻度活跃" : print(f"每日所需卡路里:{lightly_active:.2f}") elif activity_level == "中度活跃" : print(f"每日所需卡路里:{moderately_active:.2f}") elif activity_level == "高度活跃" : print(f"每日所需卡路里:{very_active:.2f}") else : print("输入的活动等级无效,请重新输入正确的选项:轻度活跃、中度活跃、高度活跃")
内容的提问来源于stack exchange,提问作者Mia
相关产品推荐
相关产品推荐

