繁体   English   中英

解开由整数和基元组成的方程式的字符串

[英]Unstring an equation that consist of integers and primitives

输入:

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:int()的无效文字,基数为10:“ 3 + 2”。

知道我该如何处理吗? 我必须使用所有给定的输入,这意味着我必须使用字符串('+')中的基元

谢谢!!

使用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

您可以使用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) ))

该函数递归地调用自身,一次分解其组件。 它还遵循标准的操作顺序

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
>>> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM