2011-01-18 25 views
5

での動作のため、彼は例のエクササイズを持ってモジュロとゼッド・ショーの<a href="http://learnpythonthehardway.org" rel="nofollow">Learn Python the Hard Way</a>(ページ15-16)でPythonの

100 - 25 * 3 % 4 

結果が97(それを試してみてください!)

である私が見ることができませんこれを行うことができ、動作の順序..

100から25 = 75
3%4 = 0
又は(100-25 * 3)= 225パーセント4 =?しかしとにかくない97私は考えていない...

同様の例は、どのような順序で7

を得た3 + 2 + 1 - 5 + 4 % 2 - 1/4 + 6ある操作が行われていますか?この例では左から右にあなたが評価するよう

+1

http://docs.python.org/reference/expressions.html#summary –

+1

あなたも、掛け算と引き算間違って持ってしまった、彼らは基本的な数学と同じ順序を使用しています。 –

+1

彼はそれを説明している必要があります。もう一度、Pythonのチュートリアルが良いと結論づけて悲しいです。 Pythonへの潜入 "を参照してください。 –

答えて

22

最初の例:*および%-よりも優先されるので、最初に25 * 3 % 4を評価します。 *%は左から右へ同じ優先度と結合性を持っているので、左から右へ評価すると、25 * 3で始まります。これにより、75が得られます。今度は75 % 4と評価し、3となります。最後に100 - 397です。

「*」と「%」と同じも優先を持っているので、左から右にそれらを評価:

+0

これらのおかげで、あなたの答えとそれに続くものは非常に参考になります。私はほとんどがこれを明確にしていませんし、モジュロコンセプト全体が私には少し外れています。 – dartdog

+0

標準ウォールクロックは59分になると1分追加すると0(== 60)になるので、標準ウォールクロックは "モジュロ60"です –

+0

私は同じ質問、ありがとう! – Drewdin

2

乗算>>モッズ>>減算

In [3]: 25 * 3 
Out[3]: 75 

In [4]: 75 % 4 
Out[4]: 3 

In [5]: 100 - 3 
Out[5]: 97 

乗算とモジュロ演算子は、同じ優先順位を持っています。

+0

最初に現れるものだけではない。例えば ​​'2 ** 3 ** 4 == 2 **(3 ** 4)'です。なぜなら、 '**'の連想性は右から左だからです。 –

+0

Svenのコメントに基づいて少し鮮明に編集しています。 – chauncey

0

は、ここでそれがどのようになるのです。

  1. 25 * 3 = 75
  2. 75%4 = 3(4 * 18 = 72;余りが3)
  3. 100から3 = 97

Q.E.D.

+0

同じ優先順位のすべてが左から右に評価されるわけではありません。 '2 ** 3 ** 4 == 2 **(3 ** 4)'が右から左へ評価されます。 –

0

オリジナル問題:100 - 25 * 3 % 4

は実際に、25 * 3を評価し、4の75%を取ることは間違っている、この問題のために便利な動作するように起こりました。

実際にPythonの%は、係数演算子です。ここで、x%yは、剰余にx/yを与えます。この場合、起こったのは75/4が18で残りが3であることです。その理由は100 - 3 = 97です。

パーセンテージを乗算しないでください。よくある間違いです。

0

2番目の例では、%は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となり、コンソールで試してみると何か言われているので、あなたが何をしたとしても、それを丸めるために何かをしたに違いありません。

0

数学は私の強みではないので、はい、この質問は私にも分かりました。しかし、あなたがこれが役に立つと願ってください。 4で割っ

75 18.75 4を乗じ

18である(75から残りの3つを残して)72である

所定の計算は、今97の答えと100-25 * 3〜4%ですこれは彼が質問セクションでのことを話すと、私はPEMDASを使用してそれを得るだろうかです:

#!/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 

私はあなたが部門として剰余(%)の治療に持っていると思う、

2

私はAを考え出しましたZacの応答は近いですが、1/4の結果の損失はPython 2.Xが整数除算の結果を切り捨てているためです。だから、その後、最初にそれが浮いていないので、0

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

Pythonは*の後に%を評価としてではなく_ +または前に返された部門を(モジュロ演算を評価しています。だから、

(100 - 25 * 3 % 4) 
(100 - 75 % 4) 
(100 - 3) 
(97) 
関連する問題

 関連する問題