python - 将字符串作为输入,像计算器一样对其进行计算并返回整数答案的函数

标签 python python-3.x python-2.7

我正在尝试实现一个函数,该函数接受字符串输入,例如“1+2-3”或“-2+2”,像计算器一样对其进行评估并返回整数答案。

在该示例中,两个输入都将返回 0。我们可以假设只有 + 或 - 运算符(没有倍数/除法/或任何其他运算符),并且输入格式良好,因此我们不需要进行任何验证(即它始终是交替的运算符/操作数) .

我需要它,而不需要使用现有的 Python 函数,如 calc() 等。相反,我尝试开发一个简单的代码来实际执行此操作。

我的代码是

d =  {}
sum = 0
for index, value in enumerate(s):
   if value.isdigit():
           pass
   else:
           if not value.isdigit():
                   d[index] = int(s[index]+s[index+1])


for i in d.values():
   sum += i

但它仅适用于“-2+2”的情况。

我怎样才能使它也适用于“1+2-3”的情况。

最佳答案

您在代码中的想法是正确的,但试图通过引用字符串中的下一个字符来有效地添加到总和这将您限制为以下形式的字符串:

.a.b

其中 .+-

您想要做的是迭代字符串中的每个字符,并且该字符是否是加号 > 或 minus (即不是 digit),然后将乘法变量分别更改为 1-1。然后,每当您达到要加或减的实际数字时,只需将该数字乘以乘法值即可。

下面是上述逻辑的代码:

s = "1+2-3"
m = 1
sm = 0
for c in s:
    is c.isdigit():
        sm += m * int(c)
    else:
         m = -1 if c == "-" else 1

其输出sm为:

0
<小时/>

请记住,这只在字符串操作数字之间交替时才有效。

关于python - 将字符串作为输入,像计算器一样对其进行计算并返回整数答案的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47290307/

相关文章:

python - 独特的 SHA-1 摘要生成

Python - 遍历前一周的同一天

python - 使用来自 (x,y,value) 三元组的数据创建 Numpy 二维数组

python - 当 ndmin=1 时,numpy.loadtxt 从单行文件加载 float

python - 如何在没有 28 "if"语句的情况下创建欧盟测验

python - "is"报告子进程通信错误()

python - 如何在嵌套列表 Python 中连接两个列表?

python - 使用 PIL 调整大小时丢失图像格式

python-2.7 - 将每个数组的散点移动 delta x

python - 基于另一列在列中的单元格上运行函数