当前位置: 首页 > 知识库问答 >
问题:

BMI计算器:ValueError:无法将字符串转换为Float:X

惠翰藻
2023-03-14

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

旁注:这只是一个更大的代码的一部分,它告诉你EG有多少克。你应该吃的脂肪。但此刻我被困在这里。

    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!")

共有1个答案

轩辕越泽
2023-03-14

您的代码有几个问题,所以让我们来研究一下:

  1. 第9行有一个非法的continue语句。您没有处于循环或开关中。
  2. 在第11行(编辑之前的第12行),您使用了一个名为name的变量。我猜您是在提供的代码之外定义的,但如果不是,您必须定义它。
  3. 您将BMI输出为元组。这可以追溯到第9行(编辑前的第10行),在这里您将其定义为weight/(height*height),2。删除,2.
  4. 我不知道您试图使用第13行定义的变量bmi2来做什么,您可以简单地在这些函数中使用bmi并且应该可以正常工作。
 类似资料:
  • 问题内容: 我正在运行以下python脚本: 但是我得到了类似的错误: 我对此感到困惑。当我在交互式部分中仅尝试一行时,而不是使用脚本进行for循环时: 它运作良好。 有人可以解释一下吗?谢谢。 问题答案: 显然,您的某些行没有有效的float数据,特别是某些行的文本无法转换为float。 当您在交互式提示中尝试它时,您仅尝试第一行,因此最好的方法是在出现此错误的地方打印行,您将知道错误的行,例如

  • 问题内容: 给出的是一个简单的CSV文件: 显然,实际数据集比这要复杂得多,但是这一数据再现了错误。我正在尝试为其构建一个随机森林分类器,如下所示: 但是当我调用fit()时,我只是得到了这个追溯: scikit-learn版本为0.16.1。 问题答案: 在使用fit之前,您必须进行一些编码。如前所述,fit()不接受字符串,但是您可以解决此问题。 有几种可以使用的类: LabelEncoder

  • 问题内容: 您如何将此String转换为gson.JsonArray? 这是我的代码: 这是将这个Collections字符串转换为JSonArray的方法吗? 问题答案: 要在JSON数组中包含字符串值,必须记住在Java程序中用反斜杠转义双引号。请参见下面的声明。 您在main()方法中的代码可以正常工作。以下只是对main()方法中的代码的微小修改。 最后,请记住在语句“ com.googl

  • 我将XML作为字符串传递给一个方法,并再次将其转换为XML来完成我的工作。 其正常工作正常,但当出现特殊字符时,如<代码> 我的XML字符串: 我的代码是: 错误: “=”是意外标记。预期标记为“;”。第1行,位置150。 完全错误为: 系统Xml。XmlException未由用户代码处理HResult=-2146232000消息=“=”是意外令牌。预期标记为“;”。第1行,位置150。源=系统。

  • 问题内容: 如何将字符串转换成运算符plus?谢谢! 问题答案: 使用查找表:

  • 问题内容: 我正在编写一些代码,并且我需要它来捕获参数并将它们传递给 我(我想要它的默认行为,编写由空格分隔并后跟换行符的参数)。但是它需要而返回。 这是代码示例: 这将返回以下错误: 这是一个错误吗?不应该接受 任何 数组吗?顺便说一句,我也尝试这样做: 但出现以下错误: 有“解决方案”解决方法吗? 问题答案: 这不是错误。需要一个类型。这意味着它必须是值的切片,而不是“任何切片”。为了转换切片