我正在尝试实现一个函数,该函数接受字符串输入,例如“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/