Skip to main content
 首页 » 编程设计

python之如何对字符串进行数学运算

2025年05月04日34soundcode

如果 a 有字符串 calculation = '1+1x8'。如何将其转换为 calculation = 1+1*8?我试着做类似的事情

for char in calculation: 
    if char == 'x': 
        calculation = calculation.replace('x', *) 
 
    # and 
 
    if char == '1': 
        calculation = calculation.replace('1', 1) 

这显然行不通,因为您不能只用一个整数替换一个字符。整个字符串必须是一个整数,如果我这样做,它也不起作用,因为我无法将 'x' 和 '+' 转换为整数

请您参考如下方法:

我们以一个更复杂的字符串为例:1+12x8。以下是一个粗略的大纲;您需要为每个步骤提供实现。

首先,您将其标记化,将 1+12x8 转换为 ['1', '+', '12', 'x', '8']。对于此步骤,您需要编写分词器或词法分析器。这是您定义运算符和文字的步骤。

接下来,您将 token 流转换为解析树。也许您将树表示为 S-expression ['+', '1', ['x', '12', '8']] 或 [operator.add, 1, [operator.mul, 12, 8] ]。此步骤需要编写解析器,这需要您定义诸如运算符优先级之类的内容。

最后,您编写了一个可以将解析树缩减为单个值的求值器。分两步执行此操作可能会产生

  1. [operator.add, 1, [operator.mul, 12, 8]] 到 [operator.add, 1, 96]
  2. [operator.add, 1, 96] 到 97