我一直在使用from fractions import *
计算分数,遵循下一个逻辑:
a = Fraction(1,4)
b = Fraction(2,5)
c = Fraction(3,4)
print(a+b*c)
输出
^{pr2}$但我需要从一个字符串执行语句,就像1/4 + 1/2
,由于某些原因,总是返回me0或1:
from fractions import *
class main():
for i in range(0, 10):
print "\t\nWRITE YOUR OPERATION"
code = 'print('
s = raw_input()
elements = s.split()
for element in elements:
print(element)
if '/' in element:
fraction = element.split('/')
numerator = fraction[0]
denominator = fraction[1]
a = Fraction(int(numerator),int(denominator))
code = code + str(a)
else:
code = code + str(element)
code = code + ')'
exec code
是我错过了什么?在
编辑1
我知道这里怎么了
字符串代码如下:
code = 'print(1/4+2/5*3/4)'
但我真正需要的是(我认为这是不可能做到的):
code = 'print(Fraction(1,4)+Fraction(2,5)*Fraction(3,4))'
或者有什么方法可以做这样的事。。。?在
我试过了,这是有效的(我的输入格式是a/b+c/d):
您可以使用ast eval
注意,在python2中,它将产生0,因为}都将生成0,您需要在python2中执行
^{pr2}$1/4
和{1.0/4
。python3将使用double类型计算它,因此它将按您的预期返回0.75,即python2版本:你可以这样做:
相关问题 更多 >
编程相关推荐