题解 | 简单计算器

简单计算器

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))

全部评论

相关推荐

哈哈哈,你是老六:百度去年裁员分评不好,赶紧弄点红包
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务