将包含整数和原始值的方程解开

0 投票
3 回答
720 浏览
提问于 2025-04-18 03:58

输入:

1st integer given: 3, 
2nd integer given: 2, 
Primitives given in a STRING: '+'

期望输出:

5

因为 3+2=5

我的方法:

str(3)+ '+' + str(2)  --> '3+2'
int('3+2') --> Wishfully thinking: 5

果然,我会得到一个错误:ValueError: invalid literal for int() with base 10: '3+2'。

有没有什么办法可以解决这个问题?我必须使用所有给定的输入,也就是说我必须使用字符串中的基本元素('+')

谢谢!!

3 个回答

1

你可以使用eval这个东西。

eval( str(2) + '+' + str(3) )

你甚至可以使用这个。

print( eval( input( "insert equation: " )))

或者如果你想把值分开的话:

inp = input("num1 num2 operation: ")
num1, num2, operation = inp.split()
print( eval ( str(num1) + str(operation) + str(num2) ))
1

这个函数会自己不断地调用自己,把它的组成部分一个一个拆解开来。它还遵循了标准的运算顺序

def evaluate(str_func):
    if "-" in str_func:
        return evaluate(str_func[:str_func.index("-")].strip()) - evaluate(str_func[str_func.index("-")+1:].strip())
    if "+" in str_func:
        return evaluate(str_func[:str_func.index("+")].strip()) + evaluate(str_func[str_func.index("+")+1:].strip())
    if "*" in str_func:
        return evaluate(str_func[:str_func.index("*")].strip()) * evaluate(str_func[str_func.index("*")+1:].strip())
    if "/" in str_func:
        return evaluate(str_func[:str_func.index("/")].strip()) / evaluate(str_func[str_func.index("/")+1:].strip())
    return float(str_func.strip())

>>> evaluate("3 + 5")
8.0
>>> evaluate("3 + 5 / 2")
5.5
>>> evaluate("1 * 2 / 3 + 4 - 5")
-0.33333333333333304
>>> 
3

使用 eval

first = raw_input('1st integer given: ')
second = raw_input('2nd integer given: ')
primitives = raw_input('Primitives given in a STRING: ')

equation = first+primitives+second
answer = eval(equation)
print answer

运行结果为:

1st integer given: 3
2nd integer given: 2
Primitives given in a STRING: +
5

或者:

1st integer given: 99
2nd integer given: 9
Primitives given in a STRING: /
11

撰写回答