[Tutor] Simple variable type question
Sander Sweers
sander.sweers at gmail.com
Fri Feb 5 19:15:10 CET 2010
On vr, 2010-02-05 at 16:54 +0000, Antonio de la Fuente wrote:
> http://openbookproject.net/thinkcs/python/english2e/ch05.html
>
> exercise number 3 (slope function) and when I run it:
>
> python ch05.py -v
>
> the doctest for the slope function failed, because is expecting a
> floating point value and not an integer:
>
> Failed example:
> slope(2, 4, 1, 2)
> Expected:
> 2.0
> Got:
> 2
Python handles integers a bit counter intuitive. It does not
automatically converts you devision from an int to a float number.
>>> 1 / 2
0
>>> 3 / 2
1
You would expect this to become 0.5 and 1.5.
> This is the function, and how I modified so it would return a floating
> point value (multiply by 1.0). But this doesn't feel the right way to
> do things, or is it?
Not is is not, if you would type this into a python shell or idle you
will still fail the 3rd test.
>>> (3-2)/(3-1) * 1.0
0.0
> def slope(x1, y1, x2, y2):
> """
> >>> slope(5, 3, 4, 2)
> 1.0
> >>> slope(1, 2, 3, 2)
> 0.0
> >>> slope(1, 2, 3, 3)
> 0.5
> >>> slope(2, 4, 1, 2)
> 2.0
> """
> result_slope = ((y2 - y1) / (x2 - x1)) * 1.0
> return result_slope
You will need to find a way to convert your int numbers to float numbers
*before* doing the calculation.
Greets
Sander
More information about the Tutor
mailing list