题解 | 简单计算器
简单计算器
https://www.nowcoder.com/practice/b8f770674ba7468bb0a0efcc2aa3a239
from ast import Expression
char = input()
def clean_expression(expression):
valid_operator = '+-*/'
operator_found = None
operator_pos = -1
for index, exp in enumerate(expression):
if exp in valid_operator:
operator_found = exp
operator_pos = index
break
if operator_found is None:
return "Invalid operation!"
else:
operator1 = float(expression[:operator_pos])
operator2 = float(expression[operator_pos+1:])
return operator1, operator_found, operator2
def compute(operator1, operator, operator2):
if operator != '+' and operator != '-' and operator != '*' and operator != '/':
return "Invalid operation!"
elif operator2 == 0.0 and operator == '/':
return "Wrong!Division by zero!"
else:
if operator == '+':
answer = float(operator1) + float(operator2)
return f"{float(operator1):.4f}+{float(operator2):.4f}={answer:.4f}"
elif operator == '-':
answer = float(operator1) - float(operator2)
return f"{float(operator1):.4f}-{float(operator2):.4f}={answer:.4f}"
elif operator == '/':
answer = float(operator1) / float(operator2)
return f"{float(operator1):.4f}/{float(operator2):.4f}={answer:.4f}"
elif operator == '*':
answer = float(operator1) * float(operator2)
return f"{float(operator1):.4f}*{float(operator2):.4f}={answer:.4f}"
if clean_expression(char) == "Invalid operation!":
print(clean_expression(char))
else:
operator1, operator, operator2 = clean_expression(char)
print(compute(operator1, operator, operator2))

