我希望在Python3.8中使用列表中的元素进行计算

我希望在Python3.8中使用列表中的元素进行计算,python,python-3.x,list,Python,Python 3.x,List,我正在寻找一个程序,用户输入一个总和,如5+6-7,我的程序识别它并给出答案,如4。到目前为止,我的程序将接受输入,重新计算数字和运算,并将它们分配到一个列表中,但是,我不知道如何获取数字和运算并计算它们。有人有什么可以帮忙的吗 这是我的密码 s = "5 + 6 - 7" #User input placeholder q = s.split() #splits the input into a list with an element for every character(not spa

我正在寻找一个程序,用户输入一个总和,如5+6-7,我的程序识别它并给出答案,如4。到目前为止,我的程序将接受输入,重新计算数字和运算,并将它们分配到一个列表中,但是,我不知道如何获取数字和运算并计算它们。有人有什么可以帮忙的吗

这是我的密码

s = "5 + 6 - 7" #User input placeholder

q = s.split() #splits the input into a list with an element for every character(not spaces)
print(q)

n = [] #numbers in user input
a = [] #actions/operations that the user inputs

print(q)


for x in range(0, len(q)):
    if q[x].isdigit(): #determines whether an element is a digit
        q[x] = int(q[x]) #str to int
        n.append(q[x]) #adds it to the n list
        print(n)
    else:
        a.append(q[x]) #adds an operation to the a list
        print(a)

answer = n[0], a[0], n[1], a[1], n[2]

print("Operations are: ", a)
print("Numbers are: ", n)
print("Answer is: ", answer)

在这种情况下,可以使用
eval()
识别表达式并计算输出

比如说,

s = "5 + 6 - 7"
print(eval(s))
输出:

4

这是你能做的最简单的事情。希望这对你有帮助

在这种情况下,可以使用
eval()
识别表达式并计算输出

比如说,

s = "5 + 6 - 7"
print(eval(s))
输出:

4
这是你能做的最简单的事情。希望这对你有帮助

将Python中的所有标准运算符作为函数

您可以将每个运算符函数指定给其文本表示形式,并使用该文本表示形式查找运算符:

ops = {'+': operator.add, '-': operator.sub}
运行数字和运算符,从列表中为每个操作选择两个参数并应用,然后将结果推回到列表中:

print("Operations are: ", a)
print("Numbers are: ", n)

for operation in a:
    arg_a = n.pop(0)
    arg_b = n.pop(0)

    result = ops[operation](arg_a, arg_b)
    n.insert(0, result)

print("Answer is: ", n[0])
您的
n
列表中剩下的元素是所请求计算的答案。这假设计算格式良好。

将Python中的所有标准运算符作为函数

您可以将每个运算符函数指定给其文本表示形式,并使用该文本表示形式查找运算符:

ops = {'+': operator.add, '-': operator.sub}
运行数字和运算符,从列表中为每个操作选择两个参数并应用,然后将结果推回到列表中:

print("Operations are: ", a)
print("Numbers are: ", n)

for operation in a:
    arg_a = n.pop(0)
    arg_b = n.pop(0)

    result = ops[operation](arg_a, arg_b)
    n.insert(0, result)

print("Answer is: ", n[0])

您的
n
列表中剩下的元素是所请求计算的答案。这假设计算的格式正确。

已经有人问过这个问题:这是否回答了您的问题?如果您的目标是尝试自己实现一个简单的解析器,而不是仅仅计算用户提供给您的内容,那么这两种方法都没有用。在这种情况下,使用图书馆是明智的做法,但它不会让你学会如何做一些脆弱但类似的事情。这个问题已经被问到:这能回答你的问题吗?如果您的目标是尝试自己实现一个简单的解析器,而不是仅仅计算用户提供给您的内容,那么这两种方法都没有用。在这种情况下,使用库是明智的做法,但它不会让你学会如何做一些脆弱但类似的事情。