[Tutor] BMI Question
eryksun
eryksun at gmail.com
Mon Sep 24 22:10:56 CEST 2012
On Mon, Sep 24, 2012 at 3:13 PM, Aija Thompson <aijathompson at hotmail.com> wrote:
>
> ft, inches = h. split("'")
> h_sum = float(12*int(ft)) + (int(inches.strip('"'))
Leave h_sum as an int:
h_sum = 12 * int(ft) + int(inches.strip('"'))
A better name here would be "h_inch". Also, make sure your parentheses
are closed. You have an extra left parenthesis in your expression. A
good editor will highlight matching parentheses.
> BMI = float(703*w)/float(h_sum*h_sum)
w is a string. Multiplying a string by N gives you a new string
containing N copies. For example, 703 copies of "180" is a number
string beyond the range of a float, so the result is inf (infinity).
You need to convert w to an int before multiplying. Also, the
expression is evaluated from left to right (based on standard order of
operations) and will return a float if you start with the constant
703.0. For example 703.0 * 180 / (72 * 72) == 24.40972222222222.
Here's the revised expression:
BMI = 703.0 * int(w) / (h_sum * h_sum)
Finally, you can round the BMI before printing, say to 2 decimal places:
print 'Your BMI is:', round(BMI, 2)
But using string formatting would be better:
print 'Your BMI is: %.2f' % BMI
More information about the Tutor
mailing list