Python中的分数

Python中的分数,python,fractions,Python,Fractions,在Python中,是否仍然可以在不导入math模块的情况下计算分数,例如2/3或1/2 代码片段很简单: # What is the cube root of your number n = float(raw_input('Enter a number: ')) print(n**(1/3)) 非常简单的代码,但无论我看到哪里,它都告诉我要导入数学模块。我只是想把这个片段添加到我正在编写的更大的代码中。我的答案一直是1,因为Python感觉1/3是0,而不是.333。我可以使用.33333,

在Python中,是否仍然可以在不导入
math
模块的情况下计算分数,例如2/3或1/2

代码片段很简单:

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

非常简单的代码,但无论我看到哪里,它都告诉我要导入
数学
模块。我只是想把这个片段添加到我正在编写的更大的代码中。我的答案一直是1,因为Python感觉1/3是0,而不是.333。我可以使用.33333,但这只是一个临时修复,我想知道如何为将来的项目执行这个非常基本的计算。

您可以使用
from\uuuuu future\uuuu导入除法
在必要时进行整数除法返回浮点(因此1/3将导致0.333…)


即使不这样做,也可以通过执行
1.0/3
而不是
1/3
来获得分数值。(标准库中有一个分数模块,可以对分数执行各种任务。如果你有很多分数的计算,你可以不用把分数转换成浮点

只需添加小数和小数部分,即可将操作转换为浮点:

>>> 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

这三种方法中的任何一种都有效。我喜欢第一个

这是Python 2吗?对我来说,一切如期/p3@TheUnfunCat:是的,在Python 3中,浮点除法是标准的;整数除法使用
/
。+1表示1.0/3建议,使用
1.0
代替
1。