Skip to main content
 首页 » 编程设计

Python之为分数执行字符串代码

2025年05月04日47myhome

我一直在使用 from fractions import * 按照以下逻辑使用某种类型的分数计算器:

a = Fraction(1,4) 
b = Fraction(2,5) 
c = Fraction(3,4) 
 
print(a+b*c) 

输出

11/20 

但我需要从字符串中执行语句,就像 1/4 + 1/2 并且出于某种原因总是返回我 0 或 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 的形式):

from fractions import* 
 
print ("your operation:") 
 
op = input() 
#print (op) 
 
elements = op.split() 
 
for el in elements: 
    if ('/' in el): 
       fraction = el.split('/') 
       numerator = fraction[0] 
       denominator = fraction[1] 
 
       a = Fraction(int(numerator),int(denominator)) 
 
    print (numerator) 
    print (denominator) 
    print (a)