繁体   English   中英

在Python中添加浮点数

[英]Adding floating numbers in python

尝试将所有BMI结果加在一起,然后显示出来,不断出现错误:

TypeError: 'float' object is not iterable

在计算bmi后我运行程序时也保持无打印>?

def bmirange():
if bmi >= 25.0:
    print('Your BMI measurement shows that you are overweight')
elif bmi <18.0:
        print('Your BMI measurement shows that you are underweight')
else:
        print('Your BMI measurement shows that you are in the healty weight band')




weight = float(input('What is your weight in Kg? '))
height = float(input('What is your height in Meters? '))
bmi = weight / (height * height)
print(bmi)
print(bmirange())

bmiredo = input('Do you want to do another BMI measurement?, y / n ')

while bmiredo == 'y':
weight = float(input('What is your weight in Kg? '))
height = float(input('What is your height in Meters? '))
print(bmi)
print(bmirange())
bmiredo = input('Do you want to do anoher BMI measurement?, y / n ')
else:
print('ok, the total of your BMI results are')

print(sum(bmi))

input('press the enter key to exit')

问题在这里:

print(sum(bmi))

bmi变量是一个数字,但是如果要使用sum() ,则需要一个数字列表。 这是收集数字列表的方法。 .append()方法将元素添加到列表的末尾。

bmi_list = []
...
bmi = weight / height**2
bmi_list.append(bmi)
...
while ...:
    ....
    bmi = weight / height**2
    bmi_list.append(bmi)
    ...
...
print(sum(bmi_list))

注意

bmirange()也存在错误: print()被调用两次。 您可以将print()放在bmirange() ,也可以print() bmirange()的结果,但是同时执行这两种操作都会导致None被打印出来,我认为这不是您想要的。

解决方案1

def bmirange():
    if bmi >= 25.0:
        print('Your BMI measurement shows that you are overweight')
    elif bmi <18.0:
        print('Your BMI measurement shows that you are underweight')
    else:
        print('Your BMI measurement shows that you are in the healty weight band')

...

bmirange() # will print itself

解决方案2

def bmirange():
    if bmi >= 25.0:
        return 'Your BMI measurement shows that you are overweight'
    elif bmi <18.0:
        return 'Your BMI measurement shows that you are underweight'
    else:
        return 'Your BMI measurement shows that you are in the healty weight band'

...

print(bmirange()) # will not print itself

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM