1


1

ゼロエラーによる除算

私は教授からのこの質問に問題があります。 これが問題です。

2つのパラメーターを受け取る関数typing_speedの定義を記述します。 1つは、特定の時間間隔で人が入力した単語の数(0以上のint)です。 秒は、秒単位の時間間隔の長さです(intは0より大きい)。 この関数は、その人のタイピング速度を1分あたりの単語数(フロート)で返します。

これが私のコードです:

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))

「ファクター」は適切に丸められていないなどの理由で0が割り当てられていることを知っています。 これらの小数を適切に処理する方法がわかりません。 フロートは明らかに何もしていません。

どんな助けでも感謝します、ありがとう。

2 Answer


9


除算結果で「float」を呼び出すと、それは「事実の後に」整数除算として扱われました(注:これはPython 2であると思われます)。 役に立たないのは、最初に除算を浮動小数点除算として指定することです。たとえば、 60.0(floatバージョンの` 60`)と言うことです。

factor = 60.0 / time_interval

別の方法は60を `float(time_interval)`で割ることです

このサンプルの相互作用に注意してください。

In [7]: x = 31

In [8]: 60 / x
Out[8]: 1

In [9]: 60.0 / x
Out[9]: 1.935483870967742


4


Sharthは次のように言っていました: from future import python

例:

>>> from __future__ import division
>>> 4/3
1.3333333333333333
>>>