2010-09-24 5 views
1

J'ai un problème avec cette question de mon professeur. Voici la question:Division par zéro erreurs

Écrivez la définition d'une fonction typing_speed, qui reçoit deux paramètres. Le premier est le nombre de mots qu'une personne a tapé (un int supérieur ou égal à zéro) dans un intervalle de temps particulier. Le second est la longueur de l'intervalle de temps en secondes (un int supérieur à zéro). La fonction renvoie la vitesse de frappe de cette personne en mots par minute (un flotteur).

Voici mon code:

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

Je sais que le « facteur » est attribué 0 obtenir parce que son pas correctement arrondi ou quelque chose. Je ne sais pas comment gérer correctement ces décimales. Float ne fait rien apparemment.

Toute aide est appréciée, merci.

Répondre

8

Lorsque vous appelez float sur le résultat de la division, il est après le fait la division a été traitée comme une division entière (note: c'est Python 2, je suppose). Il ne suffit pas, qu'est-ce que l'aide est précise d'abord la division en tant que division à virgule flottante, par exemple en disant 60.0 (la version flottante de 60):

factor = 60.0/time_interval 

Une autre façon serait diviser 60 par float(time_interval)

Notez cette interaction échantillon:

In [7]: x = 31 

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

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

Il peut également être utile de commenter "from __future__ import division". http://mail.python.org/pipermail/tutor/2008-March/060886.html –

+0

Merci Nice, je l'ai maintenant! – 1337holiday

+0

Ou utilisez 'factor = float (soixante)/time_interval' dans le cas où' soixante 'était une variable entière déjà déclarée au lieu d'un littéral. – heltonbiker

3

Sharth voulait dire: from __future__ import python

Exemple:

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