8

无论如何在Python中计算一个分数,例如2/3或1/2而不导入math模块?

代码片段很简单:

# 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,但这只是一个临时修复,我想知道如何为未来的项目执行这个非常基本的计算。

4

3 回答 3

12

您可以from __future__ import division在必要时使用整数除法返回浮点数(这样 1/3 将导致 0.333333...)。

即使不这样做,您也可以通过 do1.0/3而不是1/3. (这1.0使第一个数字成为浮点数而不是整数,这使得除法工作正常。)

于 2012-10-06T20:51:23.207 回答
5

标准库中有一个分数模块,可以对分数执行各种任务。如果您对分数有很多计算,您可以在不将它们转换为浮点数的情况下进行计算。http://docs.python.org/library/fractions.html

于 2012-10-06T20:55:25.177 回答
2

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

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

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

于 2012-10-06T22:02:28.093 回答