1、列举布尔值为False的值
0
False''[]
()
{}
None
python中,if后面可以放以上列举的这些项目,python会自动进行布尔判断
View Code
2、写函数:
根据范围获取其中3和7整除的所有数的和,并返回调用者:
符合条件的数字个数以及符合条件的数字的总和:def func(start,end):
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、函数的默认返回值是?
None
View Code
4、简述break/continue/return的区别
break:结束当前循环continue:结束本次循环进入下一次循环return:结束函数,并返回结果,默认为None
View Code
5、函数传递参数时,是引用还是复制值?并证明。
引用。
(这题是问:对于一个函数来说,外面传入的值和里面使用的值的是不是一个内存地址)
验证过程:
name='hello'
defshow():print(id(name))print(id(name))
show()
输出:31182384
31182384
View Code
6、简述三元运算书写格式以及应用场景
变量 = 值一 if条件一 else值二
ret= 1 if 1>0 else 5
View Code
7、简述lambda表达式书写格式以及应用场景
函数名 = 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]
提示:用&
l1= [11,22,33]
l2= [22,33,44]print(set(l1)&set(l2))
输出;
{33, 22}
补充:想将列表里相同的元素去掉:用set处理
View Code
9、定义函数统计一个字符串中大写字母、小写字母、数字的个数,并以字典为结果返回给调用者
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、简述函数的位置参数、关键字参数、默认参数、可变长参数的特点以及注意事项
位置参数:按形参的位置传入,叫位置参数,就是普通参数(按照形参规定的位置去传值,规定是年龄就要传年龄)
关键字参数:传入实参时指定形参的值(不用考虑顺序,为了解决位置不固定的问题)
默认参数:形参直接指定默认值的参数(不用重复传值)
可变长参数:*args **kwargs,一个只能接受没有位置参数的实参或参数的列表,元组,俩可以接收关键字参数和字典形式
View Code
11、 一些例子
第一个: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、书写输出结果
第一个: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、书写执行结果(禁止运行代码)
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、书写执行结果(禁止运行代码)
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函数有什么区别?
3.x range不会生成值,只有用的时候才会生成(其实就是迭代器)2.7range会生成一个列表,值已经生成
(06第三次作业讲解视频最后有一小部分比较重要的知识i,可以回看)
View Code