【发布时间】:2018-10-17 17:18:49
【问题描述】:
我正在编写一个 python 函数,它打印给定函数的反向。我的解决方案应该是,例如,如果给定的表达式是 200+500-600,我的输出应该是 600-500+200。然而,我的代码给了我 006-005+200。有关如何修复的任何帮助,这是我的代码。
def reverse(s):
if len(s) == 0:
return s
else:
return reverse(s[1:]) + s[0]
s = "100+200-300"
print ("The original string is : ",end="")
print (s)
print ("The reversed string(using recursion) is : ",end="")
print (reverse(s))
【问题讨论】:
-
明显的问题是你已经逐个字符地颠倒了字符串,而不是按照你说的去做:颠倒表达式元素的顺序。您必须将数字分隔为整个标记。您可能缺少的术语是“解析”;尝试搜索“表达式解析”并从那里开始工作。
-
在什么意义上
600-500+200是200+500-600的“反向”?您需要使用解析器来解析算术表达式。 -
您可能对 SymPy 感兴趣。虽然这对这种情况来说可能是矫枉过正。
-
@Georgy 这是一个如此简单的问题,不需要外部库
-
你想要代数一致性吗? 200+500-600 != 600-500+200。
标签: python python-3.x python-2.7