2012-05-31 46 views
1

我討厭承認它,但這小小的代碼行給我一些麻煩。Python代數分數

print 15 + (-1*(((yearnum + yearnum/4 - yearnum/100 + yearnum/400) + 11) % 7)) % 7 

爲什麼這不等於?

print 15 + (-1*(((497 * yearnum/400) + 11) % 7)) % 7 

也許我已經完全忘記了分數是如何工作的?

+2

您是否可以添加如何進行錯誤簡化的步驟?這可能是操作順序,或者是錯誤計算的分數。看到這些步驟,從一開始就比簡化更容易發現(閱讀:我很懶:p)。 – Corbin

+0

Python 2.x或3? – BobS

+0

'yearnum(1 + 1/4-1/100 + 1/400)'被正確地簡化爲'yearnum(497/400)',其中數學有關 - 我認爲 – epsilonhalbe

回答

3

(yearnum + yearnum/4 - yearnum/100 + yearnum/400)不等於(497 * yearnum/400) + 11) % 7)由於整數除法(Python樓層的整數除法的結果)。

+0

談論忘記基礎知識。你100%正確。感謝您指出了這一點。隨着這一點,我呼籲它退出一天。 –

+0

你可以通過在每個數字後加小數點來避免這個問題,從而迫使python使用浮點數而不是整數。 1/4 = 0,但是1./4.=0.25 – abought