我们继续python啊
接下来自定义一个函数,
检查一个整数数列里面有没有特定的数值。
数列是整数,待检查的值也是整数
你想一想这个函数,形式参数有哪几个?
函数先写接口也就是它的形式参数和返回值注意反馈之实际上是不写出来的但是你要知道比方说你可以向我这样通过注释先
记住函数的名称,形式参数,返回值,比具体的实现更重要
例如:
是不是四四班小学生函数:
第一参数:这个学生的学号
第二参数:四四班所有学生学号的列表
我们先写120行,它需要2个形式参数和1个返回值(注意形式参数是函数从外界接收到的数据,而返回值不需要从外界接收,所以不算形式参数)
那么
def 列表中有没有给定值(列表, 给定值):
就可以了
返回值我们直接在函数里面定义
def 列表中有没有给定值(列表, 给定值):
return True#我们先不计算,直接返回True,表示列表中有这个给定值,当然这是不正确的
就完成了这个函数
我学函数先写接口也就是它的形式参数和返回值注意反馈之
实际上是不写出来的但是你要知道比方说你可以向我这样通过注释先
记住函数的名称,形式参数,返回值,比具体的实现更重要
列表中有没有给定值
这个名字怎么样
可以
def t(给定值, 列表)
你现在有了函数的名称,不要忘了这个函数有两个形式参数呀,这两个形式参数的名字都叫什么?
好的那么
def t(a, b):
return True
这个函数就好了
当然了这个时候,它完全没有管参数是什么,
始终告诉你a
在列表b里面
我没有弄错吧?你是不是把a当成给定值,把b当成了列表?
return写错了,不过你先鼠标放到波浪线上面,看看错误提示,黄线和红线提示都是什么
True不是true
你可以随意给函数取名字,但是这个名字最好要让它变得容易识别,容易理解,函数的名字就是用在def后面的,你知道吧?
你可以取名叫
contains
也可以取名叫
元素是否在这个列表里面
注意中文取名也是可以的
你这个函数的形式参数是a和b,对不对?
其实只有一种办法,用b里面的每一个值和a进行比较,如果相等就是True
如果b里面每一个数字都和a不相等,那么函数的返回值就是负数
既然涉及到一个列表中的每一个数,说明我们应该用什么呀?
应该用到循环,对不对?
先写一个循环
bLen = len(b)
for i in range(0, bLen):
pass
好的红色波浪线是什么意思,鼠标放上去看看,缩进不对
但是实际上问题在return那一行,你有没有发现。return和下面的len还有更下面的for没有对齐
你有没有发现return后面的代码都变暗了?
都已经return了,可以告诉调用放结果了,所以后面的代码是没有意义的,不会执行的,所以这里呢,我们就应该把本来用于填充位置的return True这一行给去掉了
第123行只用到了I,但是你没有用到b呀,b的第2个元素应该怎么写啊?b[i]才对啊
return True
另外在循环完成之后要添加一个return false
表示从列表里面没有找到对应的a元素
Return True那一行,先按四个空格来对齐
False不是false
对了,它属于if语句块
那么它应该相对于谁空4个空格
同样的问题,这个return False它属于哪个语句块?
应该是服务循环执行完了,还没有找到的时候才说明应该返回False,所以它属于函数语句块,而不是for语句块,那么他应该针对谁来缩进呢?对了就是def
下面就是完整的更加详细的讲解:
def 判断元素是否是列表中2个元素之和(a, list):
# for i in range(0, len(list)):#i 是列表中元素的序号
# item = list[i]#List[i]就是元素本身
for 一个加数 in list:#python也可以这么写,直接得到列表中的元素
另外一个加数 = a - 一个加数
if 另外一个加数 == 一个加数:
continue#继续循环
# break#中断循环
if 元素是否在这个列表里面(另外一个加数, list):
print(f"{一个加数} + {另外一个加数} = {a}")
return True#退出函数,当然也退出函数内的循环
print("找不到这样的2个数!")
return False
自定义函数就是为了以后调用,定义好之后,以后就只需要看函数的名称,形式参数,返回值就好了,函数的实现内容可以不用看了,更不用去想了。
关注我,分享更多干货!