除以零错误

2 投票
2 回答
27547 浏览
提问于 2025-04-16 04:32

我有一个问题,来自我教授的一个题目。题目是这样的:

写一个叫做 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

撰写回答