if块内的print语句始终不执行?Python代码问题求助
问题:体重维持计算器代码无法打印结果
我编写了一段体重维持计算器的Python代码,运行时无论输入活动水平为0、1还是2,if块内的caloriesUsedCurrently始终无法打印,且无报错信息。代码如下:
print("Welcome to the weight maintenance calculator!") startWeight = float(input("Input your start weight, in kilograms: ")) height = float(input("Enter your height in centimetres: ")) sex = input("Enter your sex (M/F): ") age = float(input("Enter your age: ")) dailyActivity = input("Rank your activity level, from 0-5: ") if ((sex == "M") or (sex == "m")): startWeightBmr = int((10 * startWeight) + (6.25 * height) - (5 * age) + 5) if (dailyActivity == 0): caloriesUsedCurrently = startWeightBmr + 300 print(caloriesUsedCurrently) if (dailyActivity == 1): caloriesUsedCurrently = startWeightBmr + 350 print(caloriesUsedCurrently) if (dailyActivity == 2): caloriesUsedCurrently = startWeightBmr + 400 print(caloriesUsedCurrently)
解决方法
问题核心:input()函数获取的输入默认是字符串类型,而你在判断条件里把它和整数0/1/2做比较,两者类型不匹配,条件永远不成立,所以代码块不会执行。
有两种直接的修复方式:
方式一:将输入转为整数类型
修改dailyActivity的输入语句,把输入转成整数:
dailyActivity = int(input("Rank your activity level, from 0-5: "))
方式二:将判断条件中的数字改为字符串
保持输入为字符串,把判断里的整数换成对应的字符串:
if (dailyActivity == "0"): caloriesUsedCurrently = startWeightBmr + 300 print(caloriesUsedCurrently) if (dailyActivity == "1"): caloriesUsedCurrently = startWeightBmr + 350 print(caloriesUsedCurrently) if (dailyActivity == "2"): caloriesUsedCurrently = startWeightBmr + 400 print(caloriesUsedCurrently)
额外优化建议
- 用
elif代替多个独立if,避免不必要的条件判断:
if dailyActivity == 0: caloriesUsedCurrently = startWeightBmr + 300 elif dailyActivity == 1: caloriesUsedCurrently = startWeightBmr + 350 elif dailyActivity == 2: caloriesUsedCurrently = startWeightBmr + 400 print(caloriesUsedCurrently)
- 补充女性(F/f)的BMR计算逻辑,当前代码只处理了男性情况;
- 增加对活动等级超出0-5范围的异常提示,避免无输出的情况。
内容的提问来源于stack exchange,提问作者frosted flakes
相关产品推荐
相关产品推荐

