Python习题十
一、 编写函数devide(x, y),x为被除数,y为除数。要求考虑异常情况的处理。
1、 被零除时,输出”division by zero! “;
2、 类型不一致时,强制转换为整数再调用本函数;
3、 若没有上述异常则输出计算结果。
源代码:
class DTError(Exception): #感觉不写也可以呀 但是没有这个类定义 下面的DTError就会报错
pass
def devide(x,y):
try:
ans=x/y
if(type(x)!=type(y)): #如果两个数类型不同,抛出异常
raise DTError
except ZeroDivisionError: #抛出除数为0的异常
return 'division by zero!'
except DTError: #类型不同的异常
print ('The two nums have differet type') #先提示类型不同
x=int(x) #将x,y强制转换成int,再次调用函数。本来在这个位置嵌套了一个捕捉异常,后来发现没有必要,就删除了
y=int(y)
devide(x,y)
return ans
except:
return 'other problems, angry' #对 我很气
else:
return ans
运行结果:
二、 编写函数test(password, earning, age)用于检测输入错误。要求输入密码password第一个符号不能是数字,工资earnings的范围是0—20000,工作年龄的范围是18—70。使用断言来实现检查,若三项检查都通过则返回True。
def test(password, earning, age):
#assert 1<0
assert password[0] not in ['0','1','2','3','4','5','6','7','8','9']
assert int(earning)>=0 and int(earning)<=20000
assert int(age)>=18 and int(age)<=70
return True
运行结果: