如何将分数作为幂传递给Python以计算整数的n次方根?

5

我正在尝试编写一个简单的Python脚本,用于计算一个数的平方根。这是我想出来的代码,它可以工作。但我想学习如何使用分数指数。

var1 = input('Please enter number:')
var1 = int(var1)

var2 = var1**(.5)
print(var2)

感谢您的帮助。

你的意思是指以字符串形式输入指数,例如1/4等吗? - Adithya Surampudi
2个回答

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

使用Fraction类的最好之处在于,无论输入(var1)是int、float、fraction、decimal还是字符串(适当的字符串),上述代码片段始终有效。 - Pushpak Dagade
1
Fraction(1, 243)**Fraction(1, 5) 产生的结果是 0.3333333,而不是 Fraction(1, 3) - endolith

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),但失败了,那是因为 12 是整数,所以 Python 2 使用整数除法并忽略小数部分。你可以通过在脚本中输入 1.0/2 或者使用 input() 来修复这个问题。

你可以使用exponent = numerator/(float(denominator))而不是强制输入奇怪的"1.0/2"。 - Michael Anderson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接