Python150题day15
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<min_value:
item=min_value
return min_value
思路(与max一致):
①对传入的参数seq需要进行类型检查,如果既不是列表也不是元组,那么就返回None
②如果序列是空的,也直接返回None
③ 遍历序列中的元素,如果数据的类型不属于数字类型,那么就忽略跳过