dans Zed Shaw's Apprenez Python la voie difficile (page 15-16), il a un exemple d'exercice Le résultat est 97 (essayez-le!) p> Je ne peux pas voir l'ordre des opérations pouvant faire cela. P> 100 - 25 = 75 Un exemple similaire est Dans quel ordre les opérations sont-elles effectuées? p> p>
3% 4 = 0
ou (100-25 * 3) = 225% 4 = ??? Mais de toute façon, pas 97, je ne pense pas ... p> 3 + 2 + 1 - 5 + 4% 2 - 1/4 + 6 code> quels rendements 7 p>
8 Réponses :
multiplication >> MOD >> Soustraction
In [3]: 25 * 3 Out[3]: 75 In [4]: 75 % 4 Out[4]: 3 In [5]: 100 - 3 Out[5]: 97
Ce n'est pas seulement une question de ce qui apparaît en premier. Par exemple, 2 ** 3 ** 4 == 2 ** (3 ** 4) code>, car l'associativité de
** code> est juste à gauche.
Pour le premier exemple: * code> et
% code> a priorité sur
- code>, donc nous évaluons pour la première fois
25 * 3% 4 < / code>.
* code> et
% code> avoir la même priorité et la même associativité de gauche à droite, donc nous évaluons de gauche à droite, en commençant par
25 * 3 code>. Cela donne
75 code>. Nous évaluons maintenant
75% 4 code>, cédant
3 code>. Enfin,
100 - 3 code> est
97 code>. p>
Merci à tout cela, votre réponse et ceux qui suivent sont très utiles, même les références, et j'ai la plupart ne font pas vraiment cela clair, et tout le concept de modulo est un peu étranger pour moi ..Bien que je reçois jamais eu le cas d'utilisation. (Pour le modulo, c'est ..)
Une horloge murale standard est "MODULO 60" car une fois que vous avez atteint 59 minutes et ajouter 1 minute, vous obtenez 0 (== 60)
Le modulo n'est que le reste de la division. Savoir quand nous pouvons être délicats, mais le concept est enraciné dans les mathématiques de base.
Voici comment ça se passe: p>
'*' et '%' ont la même prégrése, alors évaluez ceux de gauche à droite. P>
q.e.d. p>
Tout avec le même préséance n'est pas évalué de gauche à droite - par ex. 2 ** 3 ** 4 == 2 ** (3 ** 4) code> est évalué de droite à gauche.
Problème d'origine: En réalité, évaluer Quel est le% en python est un opérateur de modulus où x% y donne le reste de N'essayez pas de multiplier les pourcentages, c'est une erreur courante. P> 100 - 25 * 3% 4 code> p>
25 * 3 code> et 75% de 4 est incorrect et fonctionnant de manière commode pour ce problème. P>
x / y code>. Dans ce cas, ce qui s'est passé était que
75/4 code> est 18, avec un reste de 3, c'est pourquoi
100 - 3 = 97 code>. p>
Dans la seconde exampe,% a le même ordre que * donc nous obtenons 3 + 2 + 1-5 + 4% 2-1 / 4 + 6 = 3 + 2 + 1-5 + (4% 2) - (1/4) + 6 = 1 + (4% 2) - (1/4) +6 = 1 + 0- (1/4) + 6 = 1- (1/4) + 6 = 0,75 + 6 = 6,75 et c'est ce qu'il dit lorsque je l'essaie de la console, alors tout ce que vous avez fait, vous devez avoir fait quelque chose pour arrondir. P>
Mathématiques n'est pas mon point fort, alors oui cette question m'a également eu aussi, pour un moment. Mais j'espère que vous trouverez cela utile.
75 divisé par 4 est 18,75 p>
18 multiplié par 4 est 72 (laissant 3 restants à partir du 75) p>
Le calcul est 100- 25 * 3% 4 avec une réponse de 97. Voici comment je l'obtiendrais à l'aide de Pemdas en parlant de la section de la question: P>
#!/bin/python A = 100 B = 25 C = 3 D = 4 E = B*C # 75 F = E%D # 3 G = A-F # 97 print("B * C ="), E print("E % D ="), F print("A - F ="), G
J'ai compris la réponse à votre deuxième question car elle me dérangeait aussi - la réponse de Zac est proche, mais la perte du résultat de 1/4 est à cause de Python 2.x est de tronquer des résultats de la division entier. Donc, c'est d'abord évaluer l'opération de modulo, puis la division (qui, étant donné qu'elle ne flottera pas, est renvoyé comme 0.
3 + 2 + 1 - 5 + 4 % 2 - 1 / 4 + 6 3 + 2 + 1 - 5 + (0) - (0) + 6 6 - 5 + 6 1 + 6 7
Python évalue% après * mais avant + ou _.
SO, P>
(100 - 25 * 3 % 4) (100 - 75 % 4) (100 - 3) (97)
Docs.python.org/reeference/expressions.html#smary
Vous avez même eu la multiplication et la soustraction incorrecte, ils utilisent le même ordre que dans les mathématiques de base.
Il aurait dû expliquer cela. Encore une fois, je suis triste de conclure qu'il y a de meilleurs tutoriels de Python. Essayez de «plonger dans Python».
WTF,
3% 4 == 0 code>? n'a même pas de sens,
3% 4 == 3 code> ...