Python 如何从公制转换为英制,反之亦然(bmi)?

Python 如何从公制转换为英制,反之亦然(bmi)?,python,Python,我必须创建一个BMI计划。体重应输入为千克,身高应输入为厘米,然后程序应将输入值转换为英制当量并显示,然后计算BMI并显示结果 到目前为止,我已经创建了一个BMI计算器,用户可以在其中选择公制和英制。我创建了一个while-true语句,供用户在公制和英制之间进行选择,当用户输入高度和重量时,它将计算并显示结果。但我的问题是,我必须将公制值转换为英制值,我不知道怎么做。我想念公制到英制的转换器,反之亦然,有什么办法可以改进吗 while True: try: if cho

我必须创建一个BMI计划。体重应输入为千克,身高应输入为厘米,然后程序应将输入值转换为英制当量并显示,然后计算BMI并显示结果

到目前为止,我已经创建了一个BMI计算器,用户可以在其中选择公制和英制。我创建了一个while-true语句,供用户在公制和英制之间进行选择,当用户输入高度和重量时,它将计算并显示结果。但我的问题是,我必须将公制值转换为英制值,我不知道怎么做。我想念公制到英制的转换器,反之亦然,有什么办法可以改进吗

while True:
    try:
        if choice == 'Metric':
         weight = float(input('weight in kg:'))
         height = float(input('height in cm:'))

        if choice == 'Imperial':
         weight = float(input('weight in pounds:'))
         height = float(input('height in inches:'))
    except ValueError:
        print('Invalid input')
    else:
        break

if choice == "Metric":
    bmi = weight / (height * height)
    return bmi

if choice == "Imperial":
    bmi = (weight * 703) / (height * height)
    return bmi

首先必须定义变量
choice
,因为到目前为止,您已经创建了
if
语句,这些语句只是没有被激活。所以试试这个:

def conversion_to_metric(weight, height):
    """Convert values from Imperial to Metric"""
    pound = 0.453592
    kg_ans = float(weight * pound)

    inch = 2.54
    cm_ans = float(inch * height)
    print("--------------------")
    print(str(weight) + "lbs. " + "= " + str(kg_ans) + "kg.")
    print(str(height) + "in. " + "= " + str(cm_ans) + "cm.")


def conversion_to_imperial(weight, height):
   """Convert values from Metric to Imperial"""
   kg = 2.20462
   lbs_ans = float(weight * kg)

   cm = 0.393701
   inch_ans = float(cm * height)
   print("--------------------")
   print(str(weight) + "kg. " + "= " + str(lbs_ans) + "lbs.")
   print(str(height) + "cm. " + "= " + str(inch_ans) + "in.")


while True:
    try:
        print("A. Imperial -> Metric\n" + "B. Metric -> Imperial")
        choice = input("Choose a conversion: ")
        if choice == 'B':
            weight = float(input('\tweight in kg:'))
            height = float(input('\theight in cm:'))
            conversion_to_imperial(weight, height)
         
            if weight == 'q' or height == 'q':
                break

        elif choice == 'A':
            weight = float(input('\tweight in pounds:'))
            height = float(input('\theight in inches:'))
            conversion_to_metric(weight, height)
    
            if weight == 'q' or height == 'q':
                break
        
        elif choice == 'q':
            break
         
    except ValueError:
        print('Please enter either A or B...')

希望这有帮助。记住总是给用户一个退出的选项,否则你会有一个无休止的循环,耗尽你的内存。修正一些我的变量。

这个程序有什么错?我正在尝试创建一个BMI计算器,用户可以在公制和英制之间进行选择。我创建了一个while-true语句,供用户在公制和英制之间进行选择,当用户输入高度和重量时,它将计算并显示结果。但我的问题是,我必须将公制值转换为英制值,我不知道怎么做。我错过了从公制到英制的转换,反之亦然,有什么想法吗?很抱歉出现了一些错误,我回去修复了它们,所以现在就试试吧。