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