python三次方函数_python函数基础——第三次作业讲解(一)

1、列举布尔值为False的值

ContractedBlock.gif

ExpandedBlockStart.gif

0

False''[]

()

{}

None

python中,if后面可以放以上列举的这些项目,python会自动进行布尔判断

View Code

2、写函数:

根据范围获取其中3和7整除的所有数的和,并返回调用者:

符合条件的数字个数以及符合条件的数字的总和:def func(start,end):

ContractedBlock.gif

ExpandedBlockStart.gif

deffunc(x, y):

n= [] #个数

sum = 0 #和

for i inrange(x, y):if i % 3 == 0 and i % 7 ==0:

sum+=i

n.append(i)print(len(n))print(sum)

func(1,100)#结果 4,210

View Code

3、函数的默认返回值是?

ContractedBlock.gif

ExpandedBlockStart.gif

None

View Code

4、简述break/continue/return的区别

ContractedBlock.gif

ExpandedBlockStart.gif

break:结束当前循环continue:结束本次循环进入下一次循环return:结束函数,并返回结果,默认为None

View Code

5、函数传递参数时,是引用还是复制值?并证明。

ContractedBlock.gif

ExpandedBlockStart.gif

引用。

(这题是问:对于一个函数来说,外面传入的值和里面使用的值的是不是一个内存地址)

验证过程:

name='hello'

defshow():print(id(name))print(id(name))

show()

输出:31182384

31182384

View Code

6、简述三元运算书写格式以及应用场景

ContractedBlock.gif

ExpandedBlockStart.gif

变量 = 值一 if条件一 else值二

ret= 1 if 1>0 else 5

View Code

7、简述lambda表达式书写格式以及应用场景

ContractedBlock.gif

ExpandedBlockStart.gif

函数名 = lambda形参:功能

不写函数名也可以

将简单的函数书写成匿名函数,减少代码

补充:

x=1是怎么在python中实现的?

先给1开一个内存地址,再给x开一个内存地址,x的区域中中存储了1的内存地址,所以x可以指向1

如果这时候写了一个x=2,会发生什么呢?

先开辟一块内存空间给“2”这个整数对象,x变量要指向2了(存的是2的内存地址),而“1”这个对象没有被引用了,对于没有被引用的对象,会被解释器在一段时间内刷掉,被刷掉之后,对象“1”就不存在了。

python是面向对象的语言,一切皆是对象,对象可以调用方法和属性;先有了“类”,才实例化出来对象

函数也是一个对象(一个功能强大的对象)

定义一个函数f。先开一块储存函数体的内容,然后开一块内存给函数名f(函数名就是一个变量),储存函数体的内存地址,使得f可以指向函数体的内容

匿名函数:执行一次就没了(省内存)

View Code

8、使用set集合获取两个列表l1 = [11,22,33] , l2 = [22,33,44]

提示:用&

ContractedBlock.gif

ExpandedBlockStart.gif

l1= [11,22,33]

l2= [22,33,44]print(set(l1)&set(l2))

输出;

{33, 22}

补充:想将列表里相同的元素去掉:用set处理

View Code

9、定义函数统计一个字符串中大写字母、小写字母、数字的个数,并以字典为结果返回给调用者

ContractedBlock.gif

ExpandedBlockStart.gif

deffunc(x):

A=0

a=0

num=0for i inx:ifi.isupper():

A+=1

elifi.islower():

a+=1

elifi.isdigit():

num+=1

returnA,a,num

x='sefisehfi294723dASE'cc=func(x)print(cc)#结果(3, 10, 6)

View Code

10、简述函数的位置参数、关键字参数、默认参数、可变长参数的特点以及注意事项

ContractedBlock.gif

ExpandedBlockStart.gif

位置参数:按形参的位置传入,叫位置参数,就是普通参数(按照形参规定的位置去传值,规定是年龄就要传年龄)

关键字参数:传入实参时指定形参的值(不用考虑顺序,为了解决位置不固定的问题)

默认参数:形参直接指定默认值的参数(不用重复传值)

可变长参数:*args **kwargs,一个只能接受没有位置参数的实参或参数的列表,元组,俩可以接收关键字参数和字典形式

View Code

11、 一些例子

ContractedBlock.gif

ExpandedBlockStart.gif

第一个:def func(x,z,y=5):print(x,y,z)print(func(1,3,4))

输出:1 4 3None

第二个:def func(x,y,*z):print(x,y,z)print(func(1,2,3,4,5,6))

输出:1 2 (3, 4, 5, 6)

None

第三个:def func(x,*z,**y):print(x,y,z)print(func(1,2,3,4,5,6,7))

输出:1 {} (2, 3, 4, 5, 6, 7)

None

第四个:

name=2这种叫做关键字传值(也可以叫键值对)def func(x,*y,**z):print(x,y,z)print(func(1,name=2,age=3))

输出:1 () {'name': 2, 'age': 3}

None

本题*y没有值传入,所以为空。但是如果不是*y,而是y的话,在没有值传入的情况下会报错

第五个:def func(x,*y,**z):print(x,y,z)print(func(1,2,3,4,name=2,age=3))

输出:1 (2, 3, 4) {'name': 2, 'age': 3}

None

第六个:def func(x=2,*y,**z):print(x,y,z)print(func(name=2,age=3))

输出:2 () {'name': 2, 'age': 3}

None

View Code

13、书写输出结果

ContractedBlock.gif

ExpandedBlockStart.gif

第一个:def func(*y,**z):print(y,z)print(func(1,2,3,4,5))

输出:

(1, 2, 3, 4, 5) {}

None

第二个:def func(*y,**z): #如果要将一个字典传进去,一定要加**

print(y,z)print(func([1,2,3,4,5]))

输出:

([1, 2, 3, 4, 5],) {}

None

第三个:def func(*y,**z):print(y,z)print(func(*[1,2,3,4,5])) #如果要将一个列表传进去,一定要加*

输出:

(1, 2, 3, 4, 5) {}

None

第四个:def func(*y,**z):print(y,z)print(func(*[1,2,3,4,5],{'name':'alex','age':19}))

输出:

(1, 2, 3, 4, 5, {'name': 'alex', 'age': 19}) {}

None

第五个:def func(*y,**z):print(y,z)print(func(*[1,2,3,4,5],**{'name':'alex','age':19}))

输出:

(1, 2, 3, 4, 5) {'name': 'alex', 'age': 19}

None

View Code

14、书写执行结果(禁止运行代码)

ContractedBlock.gif

ExpandedBlockStart.gif

def func1(x=1,*y,**z):print(x,y,z)return y #y是()

print(x) #这一行不执行因为return是函数结束的标志

deffunc2(arg):

ret= func1(name=arg) #ret接收的是func1的返回值y(一个空元组)

print(ret)

res= func2('fUCK') #res接收的是func2的返回值

print(res)

输出:1 () {'name': 'fUCK'}

()

None

View Code

15、书写执行结果(禁止运行代码)

ContractedBlock.gif

ExpandedBlockStart.gif

deffunc(arg):

arg.append(55)

li= [11,22,33,44]

func(li)print(li)

li=func(li)print(li)

输出:

[11, 22, 33, 44, 55]

None

View Code

16、书写执行结果(禁止运行代码)

17、简述python3中的range函数和python2.7中的range函数有什么区别?

ContractedBlock.gif

ExpandedBlockStart.gif

3.x range不会生成值,只有用的时候才会生成(其实就是迭代器)2.7range会生成一个列表,值已经生成

(06第三次作业讲解视频最后有一小部分比较重要的知识i,可以回看)

View Code

你可能感兴趣的:(python三次方函数)