lecture 4.2 异常

本文探讨了如何在Python中通过异常处理解决除零错误,并使用断言进行数据验证的方法。针对FancyDivide函数遇到的除零问题,介绍了如何修改SimpleDivide函数来避免异常并返回合适的结果。此外,还展示了如何利用断言确保Normalize函数中数据的正确性。

1  try 

Suppose we rewrite the FancyDivide function to use a helper function.

def FancyDivide(list_of_numbers, index):
   denom = list_of_numbers[index]
   return [SimpleDivide(item, denom)
               for item in list_of_numbers]
def SimpleDivide(item, denom):
   return item / denom

This code raises a ZeroDivisionError exception for the following call: FancyDivide([0, 2, 4], 0)

Your task is to change the definition of SimpleDivide so that the call does not raise an exception. When dividing by 0, FancyDivide should return a list with all 0 elements. Any other error cases should still raise exceptions. You should only handle the ZeroDivisionError.

#define the SimpleDivide function here
def SimpleDivide(item, denom):
    try:
        return item / denom
        # catch a division by zero and return 0
    except ZeroDivisionError, e:
        return 0

e:表示的是异常的msg


2 assert

def Normalize(numbers):
    max_number = max(numbers)
    assert(max_number != 0), "Cannot divide by 0"
    for i in range(len(numbers)):
        numbers[i]  /= float(max_number)
        assert(0.0 <= numbers[i] <= 1.0), "output not between 0 and 1"
    return numbers        

assert(max_number != 0), "Cannot divide by 0"   #如果max_number != 0不成立 则抛出"Cannot divide by 0"  否则continue


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值