第八讲目录
1. 集合
1.1 集合简介
- 集合表现形式set 集合和列表非常相似
- 不同点
- 集合只能存储不可变对象
- 集合中存储的对象是无序的
- 集合不能出现重复元素
- 使用{}来创建集合
- 可以通过set()来将序列和字典转换成集合
- len() 使用len()来获取集合中元素的数量
- add()像集合中添加元素
- update()将一个集合中的元素添加到另一个集合当中
- pop()随机删除集合中的一个元素一般是删除最后一个元素
- remove() 删除集合中指定的元素
- clear() 清空集合
2. 集合的运算
- & 交集运算
- | 并集运算
- -差集运算
- ^ 亦或集
- <= 检查一个集合是否是另一个集合的子集
- < 检查一个集合是否是另一个集合的真子集
- (>=)检查一个集合是否是另一个集合的超集
- (>)检查一个集合是否是另一个集合的真超集
2. 函数
2.1 函数简介
- 函数也是一个对象
- 函数用来保存一些可执行的代码,并且可以在需要时,对这些语句进行多次调用
语法
def 函数名([形参1,形参2,形参3....]):
代码块
注意:
函数名必须符合标识符的规范(可以包含字母、数字、下划线但是不能以数字开头) print是函数对象 print()是调用函数
2.2 函数的参数
2.2.1 形参和实参
- 形参(形式参数) 定义形参就相当于在函数内部声明了变量,但是并不是赋值
- 实参(实际参数)指定了形参,那么在调用函数时必须传递实参,实参将会赋值给对应的形参,简单来说有几个形参就要有几个实参
2.2.2 函数的传递方式
- 定义形参时,可以为形参指定默认值。指定了默认值以后,如果用户传递了参数则默认值不会生效。如果用户没有传递,则默认值就会生效
- 位置参数:位置参数就是将对应位置的实参赋值给对应位置的形参
- 关键字参数 : 关键字参数可以不按照形参定义的顺序去传递,而根据参数名进行传递
- 混合使用位置参数和关键字参数的时候必须将位置参数写到关键字参数前面去
2.3 不定长参数
- 定义函数时,可以在形参前面加一个*,这样这个形参可以获取到所有的实参,它会将所有的实参保存到一个元组中
- 带*号的形参只能有一个,可以和其他参数配合使用
- *形参只能接受位置参数,不能接受关键字参数
- **形参可以接收其他的关键字参数,它会将这些参数统一保存到字典当中。字典的key就是参数的名字,字典的value就是参数的值
- 混合使用时:位置传参必须在关键字传参的前面, *args必须在位置传参的后面,关键字传参的前面,**kwargs必须在最后面
2.4 参数的解包
- 传递实参时,也可以在序列类型的参数前添加*,这样它会自动的将序列中元素依次作为参数传递,即位置传参。
def fun(a, b, c):
pass
t = (1, 2, 3)
fun(*t)
- 传递实参时,也可以在字典类型的参数前添加**,这样它会采用关键字传参将字典中元素作为参数传递,因此要求字典的key必须和函数的形参一致才行。
def fun(a, b, c):
pass
t = {'a': 1, 'b': 2, 'c': 3} #如令t = {'x': 1, 'y': 2, 'z': 3}则会报错
fun(**t)
- 要求序列中的元素的个数必须和形参的个数一致
3.课后作业
第一题
def print_namecard(name,tel,sex):
print('名片','\n','姓名:',name,'\n','电话号码:',tel,'\n','性别:',sex)
a = ''
while len(a)<6 or len(a)>20:
a = input('请输入姓名,姓名长度须为6-20:')
b = ''
while len(b) != 11:
b = input('请输入电话号码,长度须为11:')
c = ''
while c != '男' and c != '女':
c = input('请输入性别,只能允许输入男或女:')
print_namecard(a,b,c)
- 运行结果:
- 知识点运用及编写思路:
本题主要用到while循环来做条件判断获取用户输入的名片信息,如果用户输入不满足条件则持续让用户输入,同时通过调用一个打印名片函数来实现名片打印输出的效果。
第二题
def fibonacci(a):
s1 = 1
s2 = 1
fib_lst = []
for i in range(a):
fib_lst.append(s1)
s3 = s1+s2
s1 = s2
s2 = s3
return fib_lst
b = fibonacci(20)
print('前20个斐波那契数列为:\n',b)
-
运行结果如下:
-
知识点运用及编写思路:
本题主要在于理解滚动迭代的思路,定义一个斐波那契函数,形参为输入变量控制数列长度,函数内定义一个for循环,根据前两个值得到第三个值,然后分别将二、三号值赋给一、二号值进行滚动迭代。通过一个fib_lst列表将迭代的结果不断添加到列表中,最终返回即可得到目标的斐波那切数列。
第三题
def sumfun(start=1,end=100):
sumret = 0
while start <= end:
sumret += start
start += 1
return sumret
a = sumfun()
print('1-100之间所有整数的和为:',a)
- 运行结果如下:
- 知识点运用及编写思路:
本题较为简单,函数内的形参为累加的起始值和终值,外部不输入的情况下默认分别为1和100,通过while循环判断终止的条件,然后进行累加即可得到最终结果。