2012-02-07 139 views
1

我在Python做一些很基本的excersizes想不通簡單的基本操作。我正在用艱苦的方式學習Python書,它在excersize 3中有一個我應該理解的表達式。算術蟒蛇,

3 + 2 + 1 - 5 + 4%2 - 1/4 + 6中,出來作爲7.

對我來說,答案是6.

6 - 5 + 0 - 1/4 + 6

1 - 1/4 + 6

6.

這顯然是錯誤的,但任何人都可以幫我在數學諸如此類先決?如果它不在括號內,我似乎已經忘記了一切!

編輯:非常感謝您的答覆。我清楚地知道了一些非常基本的東西,在繼續之前我認爲這很重要!我的經營秩序絕對是失敗的!

回答

6

4%2 = 0,因爲的4/2的餘數是0

四分之一也爲0,因爲它是做整數除法和0.25被向下舍入爲0

+4

python不會在這裏,它* *地板*。例如'3/4'是'0'而不是'1' – 2012-02-07 15:42:37

2

1/4回合下來(或層)至0因爲1和4是整數。 因此1-0+6 = 7

+1

它不是「圓」 - 這就是python中整數除法的計算方式。 – Marcin 2012-02-07 15:35:12

+0

Python不在這裏,它* *地板*。例如'3/4'是'0'''' – 2012-02-07 15:42:09

+0

好吧,「在Python'1/4'下降到...」 – vikki 2012-02-07 15:42:53

0

操作數是整數,所以1/4整數分= 0

1

你似乎認爲蟒蛇應該由第一令牌權分割前評估一切的/運營商的左側。這將是一個奇怪的評估順序,任何措施。

按照一貫的程序:如果您有綴運營商複雜的表達式,使用括號強制正確的順序。

1

優先級是除法和乘法,如果你不使用括號!

以這種方式:1-1/4 + 6 = 7,因爲1/4,與整數工作,是= O

3

如果我們看一下rules for Operator precedence in Python我們可以看到:

3 + 2 + 1 - 5 + 4 % 2 - 1/4 + 6 

被視爲:

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

(對於算術運算符,這是相同的順序在數學上standard order of operations。)

4 % 2現在是因爲其餘0除以4被2時爲0 1/40如Python將返回相同類型的一個值作爲操作數和0.25當「地板」是0。

所以我認爲你的錯誤是將/應用於左邊的整個表達式。實際上,/-具有更高的優先級,所評估的部門是1/4

0

而不是數學你應該看看的運算符:

a%b是一個模塊化的B,其在α= 4和b = 2倍的產率0(OK,由於數學;)的情況下)

1/4:這裏重要的是要考慮到1和4是整數。所以結果也將是一個整數,即0.25變爲0

這就是爲什麼你最終

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

對於蟒蛇運營看看the python docs

1

在Python3.x中它將是6.75 b/c 1/4 = 0.25(真分度)。但是,在Python 2.x 1/4 = 0中(轉換爲所用參數的最普通類型,在給定情況下爲int)。因此,如果它會是1/4或在Python2.x 1/4,那麼您會得到0.25,結果將是6.75

0
3 + 2 + 1 - 5 + 4 % 2 - 1/4 + 6 

優先此順序是乘法和除法進行評價從左到右再加減。所以..

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

圓括號內的那些因操作順序而被首先評估。因爲你只有整數(而不是一個可以允許值0.25的浮點數),所以1/4會由於蟒蛇而變爲0。

3 + 2 + 1 - 5 + 0 - 0 + 6 

之後,當你從左至右加法/減法的評估,如果只剩下:

6 - 5 + 6 => 1 + 6 => 7 

記住,除法和乘法加法和減法之前進行評估。欲瞭解更多信息,請致電Order of Operations - Wikipedia