【发布时间】:2020-07-14 18:53:25
【问题描述】:
我需要制作一个程序,接受用户输入的数学表达式 (expr) 并处理找到答案。但是,我们不允许使用 eval() 函数。赋值说明我们应该假设用户将输入的唯一运算符是:+、-、*、/、%。操作数也被假定为一位整数。
我的想法是将操作数转换为整数并列出所有可以使用的运算符。然后,使用 if 语句查看运算符如何匹配我的列表。
到目前为止,我能够想出这些代码行:
operand1 = expr[1]
operator = expr[2]
operand2 = expr[3]
operators = ['+','-','*','/','%']
我这样做是为了索引输入表达式中每个操作数和运算符的位置。我被困在这里,希望有人能给我一些关于如何前进的帮助。代码的结果需要输出用户输入的表达式,以及表达式的结果。如果表达式的第二个操作数是 0 并且运算符是除法,则代码输出“无”。
【问题讨论】:
-
ast.literal_eval 可以评估文字表达式,它们是什么样的?
-
解决此问题的典型方法是转换为后缀表示法(或仅转换为后缀堆栈),然后解决它。
-
查看数学表达式的语法树。您可能还对
operator模块感兴趣。 -
Parse Tree here 这样的东西会起作用吗?
标签: python python-3.x string type-conversion