【发布时间】:2021-05-24 16:20:21
【问题描述】:
我正在尝试使用运算符和括号对数学表达式进行标记,包括整数、浮点数(正数和负数)。
例如,
expression = "-2.56*13.2+(11/-4)-.55"
tokenize(expression)
["-2.56", "*", "13.2", "+", "(", "11", "/", "-4", ")", "-", ".55"]
我的尝试:
def tokenize(expression):
tokens = []
for char in expression:
if char.isdigit() and tokens[-1].isdigit():
tokens[-1] += char
else:
tokens.append(char)
return tokens
expression2 = "((12+13)*5)"
tokenize(expression2)
['(', '(', '12', '+', '13', ')', '*', '5', ')']
我的代码适用于以括号开头的表达式,但不适用于不是括号的表达式,也不适用于负号和浮点数。在不导入任何模块的情况下,我应该如何用正负浮点数标记表达式?任何帮助将不胜感激!
【问题讨论】:
-
请修正代码的缩进
-
如果没有
re模块,这是一个非常难以解决的问题(并且使用为实际语言解析而设计的东西会更好)。特别是减号的模糊性使得它比简单地确定如何对每个单独的字符进行分类要复杂得多。为什么“不导入任何模块”要求?如果是为了一门课程,他们太早把你扔进了深渊,我建议放弃它,找一门更适合初学者的课程。