【问题标题】:print the reverse of algebraic expression打印代数表达式的反面
【发布时间】: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+200200+500-600 的“反向”?您需要使用解析器来解析算术表达式。
  • 您可能对 SymPy 感兴趣。虽然这对这种情况来说可能是矫枉过正。
  • @Georgy 这是一个如此简单的问题,不需要外部库
  • 你想要代数一致性吗? 200+500-600 != 600-500+200。

标签: python python-3.x python-2.7


【解决方案1】:

使用.split() 分解你的字符串,然后使用.join() 反向列表

s = '200 + 500 - 600'
lst = s.split()
print(' '.join(lst[::-1]))
# 600 - 500 + 200

【讨论】:

    猜你喜欢
    • 2012-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-26
    • 2019-03-29
    相关资源
    最近更新 更多