首页 > 解决方案 > BMI 计算器:ValueError:无法将字符串转换为浮点数:X

问题描述

所以上周我决定学习用 python 编码,因为我有 C++ 和 C# 的经验,老实说,对我来说没什么。另一方面,Python 可以。我决定制作一个 BMI 计算器,因为我发现它很简单。问题出现在 if 部分。我添加了我找到的代码,但它只是将一个错误切换到另一个错误。任何提示将不胜感激:)

旁注:这只是一个更大的代码的一部分,它告诉你有多少克,例如。你应该摄入的脂肪。但目前我被困在这里。

    try:
        weight = float(input("""What is your weight (Kg)?
                           >>> """))

        height = float(input("""What your height (m)?
                            >>> """))
    except ValueError:
        print("Incorrect input")
        continue
    bmi = weight / (height * height), 2

    print(name + " your BMI is " + str(bmi))

    bmi2 = float('.'.join(str(ele) for ele in bmi))
    if bmi2 < 18.4:
        print("You are under weight by BMI standards!")
    elif bmi2 == 18.5 and bmi2 <= 24.9:
        print("You are normal weight by BMI standards!")
    elif bmi2 == 25 and bmi2 <= 29.9:
        print("You are over weight by BMI standards!")
    elif bmi2 == 30 and bmi2 <= 34.9:
        print("You have obesity (class 1) by BMI standards!")
    elif bmi2 == 35 and bmi2 <= 39.9:
        print("You have obesity (class 2) by BMI standards!")
    elif bmi2 > 40:
        print("You have obesity (class 3) by BMI standards!")

标签: python

解决方案


您的代码存在一些问题,因此让我们来看看它们:

  1. 在第 9 行,您有一个非法continue声明。您不在循环中或switch.
  2. 在第 11 行(编辑前的第 12 行),您使用了一个名为name. 我猜你在提供的代码之外定义了这个,但如果没有,你必须定义它。
  3. 您将 BMI 输出为tuple. 这可以追溯到第 9 行(编辑前的第 10 行),您将其定义为weight / (height * height), 2. 删除, 2.
  4. 我不知道您要使用bmi2第 13 行定义的变量来做什么,您可以简单地bmi在这些函数中使用并且应该可以正常工作。
  5. 您还需要将==关于 BMI 标准部分中的所有运算符更改为 >=,并将and语句更改为or.

推荐阅读