2011-08-13 5 views
2

J'essaie de compter mes oeufs dans un exercice d'apprentissage de Python à la dure. La formule pour le comptage des oeufs est:Sortie mathématique inattendue

print (3 + 2 + 1 - 5 + 4 % 2 - 1/4 + 6) 

et la réponse proposée est 7. Je reçois 6.75 et je ne sais pas pourquoi, je pense que je le mets correctement mais je peux me tromper. La façon dont il est montré ci-dessus est exactement comment je l'ai mis dans le programme.

Note: Le livre que j'utilise utilise la version 2.6 de Python où j'utilise la version 3.1. Cela pourrait faire partie de la confusion. S'il vous plaît aider.

L'URL de référence here.

+3

Utilisez '//' au lieu de '/' – JBernardo

+0

Mieux vaut également utiliser une version 2.x. Ils ne sont pas périmés comme vous le pensez. [Python Wiki Python2 ou Python3] (http://wiki.python.org/moin/Python2orPython3) – therealmarv

+1

@therealmarv Bien que ce soit probablement mieux en lisant le livre, Python3 a encore de très jolis ajouts et se débarrasse de ces erreurs de conception. "(par défaut, la division entière dans un langage dynamique a ses problèmes), on pourrait aussi le voir comme une expérience d'apprentissage supplémentaire. Aussi votre lien est déjà un peu vieux, le support de Python3 s'améliore de plus en plus. – Voo

Répondre

12

En python 2.x, l'opérateur / a fait la division entière. En python 3, le résultat du / est un float quels que soient les types d'entrée. Utilisez l'opérateur // pour effectuer une division entière.

0

Python 3 est non-rétro-compatible avec Python 2. Utilisez la version de Python sur laquelle votre livre est basé pour moins de confusion. Comme d'autres l'ont mentionné, Python 3 et Python 2 effectuent la division différemment, entre autres choses.