【发布时间】:2016-11-12 16:31:14
【问题描述】:
所以我有代码可以使反向波兰表达式工作
def rpn(x):
stack = []
operators=['+', '-', '*']
for i in x.split(' '):
if i in operators:
op1 = stack.pop()
op2 = stack.pop()
if i=='+': result = op2 + op1
if i=='-': result = op2 - op1
if i=='*': result = op2 * op1
stack.append(result)
else:
stack.append(float(i))
return stack.pop()
x = str(input("Enter a polish expression:"))
result = rpn(x)
print (result)
但是,我正在为如何为特定输入提供一些错误消息而苦苦挣扎 目前,此代码仅在每个值后有空格时才有效,即 3 4 + 然后得到 7 的结果
但我想做到这一点
-自动删除间距
或者代码只能在没有间距的情况下工作,并且如果有间距则提供错误 我想按照以下方式添加代码
if x contains " ":
print("error")
我要解决的第二个问题是,限制使用的运算符 所以它只会运行代码,如果它有数字和 3 个运算符(+,-,*),如果有任何其他运算符或字母,它将显示错误。我再次想到的是
if x contains something other than "integers and +,-,*:
then print an error
我再次有了这个概念,但没有关于如何执行它的 python 关键字知识。
【问题讨论】:
-
没有空格如何确定一个数字何时结束?除非每个数字都是一个数字。
-
啊,我应该提到的,确实只有个位数
-
你可以迭代
x.strip()并丢弃空格。
标签: python expression postfix-notation