2019实战第二期-异常实战打卡

2019实战第二期-异常实战打卡

题目:
编写一个迷你的计算器,支持两个数加,减,乘,除
要求提示用户输入2个数字和一个运算符号,比如1,2,+
提示:
这个题目里面需要有几个地方检查
第一:是输入的参数,用户可能会乱输入,这个地方要有判断
第二:输入的参数要合法运算的适合,要考虑异常,比如9/0这样的肯定不对
第三:输入的参数,尤其是数字,可能是浮点,比如1.1,-10,-0.09

def is_number(s):
    try:
        float(s)
        return True
    except ValueError:
        pass
    return False


def mini_computer(str):
    if len(str.split(',')) == 3:
        strs = str.split(",")
        if is_number(strs[0]) and is_number(strs[1]) and strs[2] in ['+', '-', '*', '/']:
            if strs[2] == "+":
                return float(strs[0]) + float(strs[1])
            elif strs[2] == "-":
                return float(strs[0]) - float(strs[1])
            elif strs[2] == "*":
                return float(strs[0]) * float(strs[1])
            elif strs[2] == "/":
                try:
                    return float(strs[0]) / float(strs[1])
                except ZeroDivisionError:
                    raise ZeroDivisionError
        else:
            raise Exception

    else:
        raise Exception


while True:
    try:
        user_input = input("please input right two number and one calculating signs,example 1,2,+: ")
        print(mini_computer(user_input))
        break
    except ZeroDivisionError:
        print('ZeroDivisionError: division by zero')
        continue
    except Exception:
        print("please input right calculation")
        continue

你可能感兴趣的:(2019实战第二期-异常实战打卡)