2012-10-06 38 views
8

反正有計算一個分數,例如Python中的2/3或1/2,而不導入math模塊?級分在Python

的代碼片段很簡單:

# What is the cube root of your number 
n = float(raw_input('Enter a number: ')) 
print(n**(1/3)) 

極其簡單的代碼,但是我到處看看它告訴我導入math模塊。我只是想將該代碼片段添加到我正在處理的更大的代碼中。我一直得到1作爲我的答案,因爲Python感覺像1/3是0而不是.333333333。我可以把.33333,但這只是一個臨時修復,我想知道如何執行這個非常基本的計算未來的項目。

+0

這是一個Python 2的事?按預期工作對我來說W/P3 –

+1

@TheUnfunCat:是的,在Python 3,浮動劃分標準;使用'//'進行整數除法。 –

回答

12

您可以使用from __future__ import division,使整數除法回報漂浮在必要時(使1/3將導致0.333333 ......)。

即使沒有這樣做,您可以通過執行1.0/3而不是1/3來獲得您的小數值。 (1.0使第一個數字浮動,而不是一個整數,這使得分工的權利。)

+0

您也可以使用'1/3'。 – filmor

+2

1爲1.0/3的建議,以及用於使用'1.0'代替'1.' –

+0

優秀。謝謝。 – 01110100

2

只需添加一個小數和分數部分投操作成float:

>>> n=float(raw_input('Enter a number: ')); print n**(1.0/3) 
Enter a number: 2 
1.25992104989 

或者,使用float明確:

>>> n=float(raw_input('Enter a number: ')); print n**(float(1)/3) 
Enter a number: 2 
1.25992104989 

或者,使用部門的Python 3中的風格:

>>> from __future__ import division 
>>> n=float(raw_input('Enter a number: ')); print n**(1/3) 
Enter a number: 2 
1.25992104989 

任何這三個方法的工作原理。我更喜歡第一個。