2010-09-24 56 views
1

我對教授的這個問題有疑問。下面是問題:由零錯誤劃分的錯誤

編寫函數typing_speed的定義,它接收兩個參數。第一個是一個人在特定的時間間隔內輸入的字數(int大於或等於零)。第二個是以秒爲單位的時間間隔長度(一個大於零的int)。該函數以單位每分鐘的語言(一個浮點數)返回該人的打字速度。

這裏是我的代碼:

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,因爲其沒有被正確或東西四捨五入。我不知道如何正確處理這些小數。浮動顯然沒有做任何事情。

任何幫助表示讚賞,謝謝。

回答

8

當你在劃分結果稱float,這是事實分裂被視爲一個整數除法後(注:這是Python 2中,我假設)。它沒有幫助,什麼是幫助最初指定的部門爲浮點劃分,例如說60.0(的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 
+3

它也可能是有益的關於「從__future__進口部」發表評論。 http://mail.python.org/pipermail/tutor/2008-March/060886.html – 2010-09-24 06:18:48

+0

Nicee感謝兄弟,我明白了! – 1337holiday 2010-09-24 22:39:21

+0

如果'sixty'是已經聲明的整型變量而不是文字,則使用'factor = float(sixty)/ time_interval'。 – heltonbiker 2012-06-05 17:13:17

3

沙爾斯的意思是說:from __future__ import python

例子:

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