Python 使用运算符和字典创建计算器

Python 使用运算符和字典创建计算器,python,Python,我知道有一百万个这样的问题,但我还没有找到一个比简单的两个值的加减更能计算的问题。我的想法是使用字典、运算符和数学,但我不太知道如何设计循环。以下是我到目前为止的情况: import math import operator A=input('input your equation\n') dict={'cos':math.cos, 'sin':math.sin, 'pi':math.pi,'e':math.exp,'+':operator.add,'-':operator.sub,'*':

我知道有一百万个这样的问题,但我还没有找到一个比简单的两个值的加减更能计算的问题。我的想法是使用字典、运算符和数学,但我不太知道如何设计循环。以下是我到目前为止的情况:

import math
import operator

A=input('input your equation\n')

dict={'cos':math.cos, 'sin':math.sin, 'pi':math.pi,'e':math.exp,'+':operator.add,'-':operator.sub,'*':operator.mul,'/':operator.truediv,'log':math.log}
dict2={}
for x in range(1000):
    dict2[str(x)]=x
dict.update(dict2)
B=A.split()
所以这个想法是,个人可以输入任何等式,并得到适当的值。所以sin2+cos5/2*pi或者类似的东西。这里的问题是运算符不能准确地转换为+和-函数,相反,您使用的格式是运算符(integer1,integer2),而数学函数更像数学(integer)

我的想法是,个体会键入类似2+2+2的内容,然后我将其拆分,并将每个值,即“2”转换为整数,“+”转换为加法函数。但是,这不起作用,因为add与+。数学函数也是如此

此外,我的上述设置/想法遇到了另一个问题。到目前为止,它只是简单地在字符串出现时将其单独处理,但这严重限制了用户可以输入的内容。理想情况下,我希望它能让用户输入一个方程并求解,而不仅仅是一系列应用函数的字符串。这需要使用括号,但我当前的设置不使用括号

也就是说,(2+2)/(3+2),应该是4/5,我当前的设置将它视为4/3+2(与4.5不同)

这正是我想做的

#user input
2 + 2 / 4 + 2
#script then goes through each string and applies operations to them using a loop
#so program reads
'2', '+', '2', '/', '4', '+', '2'
#then using the dictionary, it converts this to:
2+2/4+2
#and, this is python readable, so it would be the same if you just typed the above equation into python
#output
3

你的具体问题是什么?您已经描述了您的程序所做的工作,但没有询问任何符合申请资格的问题。如果“我当前的设置没有使用该功能”,那么听起来您需要构建该功能。我的问题是,如何使用字典和运算符创建计算器。我有一个基本的设置,但我的设置遇到一些问题。例如,operator.add与+不同,您不能执行2 operator.add 2,这与2+2不同。若要使用运算符,格式应为operator.add(2,2),这将为您提供4。根据这些问题的其他答案,他们定义了一个函数,其中operator.add(integer1,integer2),然后在字典中使用它,问题是如果用户输入2+2+3,那么设置就不起作用。此外,如果你做sin(2)+2,它将不起作用,所以我想做的是设置它,使它从左到右读取输入,并在输入时执行操作。即,它将字符串输入转换为整数和函数。因此,如果您将“2+2”键入为字符串,它会将其转换为2+2。