Python150题day14

3.内置函数篇

3.1 abs

abs函数返回数字的绝对值,请实现下面的函数,模仿abs函数的功能,返回数字的绝对值

def my_abs(number):

        pass

代码:

def my_abs(number):

        if not isinstance(number, (float, int)):

                 return number

        if number < 0:

                number *= -1

        return numbe

思路:

处于程序健壮性考虑,要对传入的number参数进行检查,判断其类型是否为数字类型,float和int是比较常用的数据类型,复数类型基本接触不到,因此不考虑。
判断变量类型,可以使用isinstance函数,该函数的第一个参数是需要检查类型的对象,第二个参数可以是数据类型,也可以是一个元组,元组里是多个数据类型,只要满足其中一个就返True
如果number的数值小于0,乘以-1就得到了绝对值

3.2 sum

sum函数可以获取列表所有数据的综合,模仿这个功能实现下面的函数

def my_sum(lst):

        """

        返回列表⾥所有数据的总和

        如果列表⾥有⾮数字类型的数据,忽略不管

        :param lst:

        :return:

        """

        pass

代码:

def my_sum(lst):

sum_res = 0

if not isinstance(lst, list):

        return sum_res

for item in lst:

        if isinstance(item, (float, int)):

                sum_res += item

return sum_res

思路:

①对传入的参数lst,要进行类型检查

②遍历列表,遇到数字类型的数据就进行加和操作

3.3 max

max函数返回序列中的最大值,传入的参数可以是列表,也可以是元组,实现下面的函数,实现同样的功能,如果序列里有非数字类型的数据,可以忽略,如果序列是空的,可以直接返回None

def my_max(seq):

        """

        返回序列⾥的最⼤值

        :param lst:

        :return:

        """

代码:

def my_max(seq):

        max_value=None

        if not isinstance(seq,(list,tuple)):

                return  max_value

        if len(seq)=0:

                return max_value

        max_value=seq[0]

        for item in seq:

                if not isinstance(item,(int,float)):

                        continue

                if item>max_value:

                        item=max_value

        return max_value

思路:

①对传入的参数seq需要进行类型检查,如果既不是列表也不是元组,那么就返回None

②如果序列是空的,也直接返回None

③ 遍历序列中的元素,如果数据的类型不属于数字类型,那么就忽略跳过

3.4 min

min函数返回序列中的最小值,传入的参数可以是列表,也可以是元组,实现下面的函数,实现同样的功能,如果序列里又非数字类型的数据,可以忽略

def my_min(seq):

        """

        返回序列⾥的最⼩值

        :param lst:

        :return:

        """

        pass

代码(与max类似):

def my_min(seq):

        min_value=None

        if not isinstance(seq,(list,tuple)):

                return  min_value

        if len(seq)=0:

                return min_value

        min_value=seq[0]

        for item in seq:

                if not isinstance(item,(int,float)):

                        continue

                if item

                        item=min_value

        return min_value

思路(与max一致):

①对传入的参数seq需要进行类型检查,如果既不是列表也不是元组,那么就返回None

②如果序列是空的,也直接返回None

③ 遍历序列中的元素,如果数据的类型不属于数字类型,那么就忽略跳过

你可能感兴趣的:(Python150题,python,开发语言)