除以零错误
我有一个问题,来自我教授的一个题目。题目是这样的:
写一个叫做 typing_speed 的函数,这个函数需要接收两个参数。第一个参数是一个人某段时间内打字的单词数量(这个数字是一个大于或等于零的整数)。第二个参数是这段时间的长度,以秒为单位(这个数字是一个大于零的整数)。这个函数要返回这个人的打字速度,单位是每分钟多少个单词(返回值是一个小数)。
这是我的代码:
def typing_speed(num_words,time_interval):
if(num_words >= 0 and time_interval > 0):
factor = float(60 / time_interval)
print factor
return float(num_words/(factor))
我知道“factor”这个变量被赋值为0,是因为它没有正确地进行四舍五入之类的。我不知道怎么正确处理这些小数。看起来 float 这个类型没有起到作用。
任何帮助都非常感谢,谢谢。
2 个回答
4
Sharth的意思是:from __future__ import python
举个例子:
>>> from __future__ import division
>>> 4/3
1.3333333333333333
>>>
11
当你在除法结果上使用 float
时,这个操作是在除法已经完成之后进行的,而这次除法是以整数方式进行的(注意:这是 Python 2,我假设如此)。这样做并没有什么帮助,真正有用的是一开始就把除法指定为浮点数除法,比如可以用 60.0
(这是 60
的浮点数版本)来表示:
factor = 60.0 / time_interval
另一种方法是用 float(time_interval)
来除以 60。
注意下面这个示例交互:
In [7]: x = 31
In [8]: 60 / x
Out[8]: 1
In [9]: 60.0 / x
Out[9]: 1.935483870967742