如何从数学运算符列表中绘制并将其解释为数学运算而不是字符串



我试图使用这个循环来压缩现有代码,但将运算符存储在列表中然后从中提取不起作用,它会抛出以下错误:TypeError: unsupported operand type(s) for +: 'float' and 'str'

我知道它并没有将operator变量解释为实际的数学运算,而是将其读取为str,但我不知道如何解决这个问题。这是我构建的完整循环。

operators = ["+", "-", "*", "/", "^"]
for operator in operators:
math_expression = input("Enter your math expression, or (q)uit: ")
print("Operator found " + operator)
operator_position = math_expression.find(operator) # find operator
print("Found " + operator + "operator at index " + str(operator_position))
first_number = math_expression[:operator_position] # find first number
second_number = math_expression[operator_position + 1:] # find second number
answer = float(first_number) + operator + float(second_number)

operator模块具有表示基本操作的函数,例如您要查找的操作。

在这里,我们

  • 将这些运算符填充到dict中
  • 针对每个运算符在symbolfunc上循环
  • 如果在用户输入中找到符号,str.partition()函数会将字符串拆分为符号前后的段
  • 然后我们就称之为CCD_ 8
import operator
operators = {
"+": operator.add,
"-": operator.sub,
"*": operator.mul,
"/": operator.truediv,
"^": operator.pow,
}
expression = "5 + 3"  # elided input to make debugging faster
for symbol, func in operators.items():
if symbol in expression:
a, _, b = expression.partition(symbol)
answer = func(float(a), float(b))
print(answer)
break

最新更新