如何将分数作为指数传递给Python,以便计算整数的n次根?
我正在尝试写一个简单的Python脚本,用来计算一个数字的平方根。下面是我写的代码,它可以正常工作。不过,我想学习如何使用分数指数来实现同样的功能。
var1 = input('Please enter number:')
var1 = int(var1)
var2 = var1**(.5)
print(var2)
谢谢你的帮助。
2 个回答
6
numerator, denominator = [float(s) for s in raw_input().strip().split("/")]
print 2 ** (numerator/denominator)
我会先把输入中的空格去掉,然后把它分成几个部分,接着用一种叫做列表推导式的方法把这些部分转换成数字。
不过,如果输入的格式不是小数,这样做就会出错。为了检查并正确处理这种情况……
line = raw_input().strip()
if "/" in line:
numerator, denominator = [float(s) for s in line.split("/")]
exponent = numerator/denominator
else:
exponent = float(line)
print 2 ** exponent
如果你尝试使用 2 ** (1/2)
但失败了,那是因为 1
和 2
是整数,所以在Python 2中会进行整数除法,忽略小数部分。你可以通过在你的代码里写 1.0/2
或者在 input()
中输入来解决这个问题。
11
你可以通过使用 fractions
模块来处理分数指数。
在这个模块里,有一个叫 Fraction
的类,它的工作方式和我们内置的 int
类很相似。
这里有一个链接,可以查看这个类的文档 - http://docs.python.org/library/fractions.html (你只需要看看前面的几个例子,就能理解它是怎么工作的,非常简单。)
下面是我用过的代码 -
from fractions import Fraction
var1 = input('Please enter number:')
var1 = Fraction(var1)
expo = Fraction('1/2') //put your fractional exponent here
var2 = var1**expo
print var2