一. 集合
1.1 集合简介
- 集合表现形式set 集合和列表非常相似
- 不同点
。 集合只能存储不可变对象
。 集合中存储的对象是无序的
。 集合不能出现重复元素 - 使用{}来创建集合
- 可以通过set()来将序列和字典转换成集合
- len() 使用len()来获取集合中元素的数量
- add()像集合中添加元素
- update()将一个集合中的元素添加到另一个集合当中
- pop()随机删除集合中的一个元素一般是删除最后一个元素
- remove() 删除集合中指定的元素
- clear() 清空集合
1.2 集合的运算
-
& 交集运算 | 并集运算 - 差集运算 ^ 亦或集 <= 检查一个集合是否是另一个集合的子集 < 检查一个集合是否是另一个集合的真子集 >=检查一个集合是否是另一个集合的超集 >检查一个集合是否是另一个集合的真超集
二. bytes类型
1. Bytes
1.1. bytes介绍
在Python3以后,字符串和bytes类型彻底分开了。字符串是以字符为单位进行处理的,bytes类型是以字节为单位处理的。
bytes数据类型在所有的操作和使用甚至内置方法上和字符串数据类型基本一样,也是不可变的序列对象。
Python3中,bytes通常用于网络数据传输、二进制图片和文件的保存等等。
1.2 bytes创建
可以通过调用bytes()生成bytes实例,其值形式为 b’xxxxx’,对于同一个字符串如果采用不同的编码方式生成bytes对象,就会形成不同的值。
>>> a = b'hello'
>>> type(a)
<class 'bytes'>
>>> b = bytes('hello',encoding='utf8')
>>> type(b)
<class 'bytes'>
1.3 bytes类型常用转换
那在实际应用中,我们通常会将bytes类型与str类型做转换。
- 字节转为字符串
>>> d = b'world'
>>> d.decode()
'world'
>>> type(d)
<class 'bytes'>
- 字符串转为字节
>>> e = 'world'
>>> e.encode()
b'world'
>>> type(e)
<class 'str'>
三. 函数上
1. 函数简介
- 函数也是一个对象
- 函数用来保存一些可执行的代码,并且可以在需要时,对这些语句进行多次调用
-
语法 def 函数名([形参1,形参2,形参3....]): 代码块
注意:
函数名必须符合标识符的规范(可以包含字母、数字、下划线但是不能以数字开头)
print是函数对象 print()是调用函数
2. 函数的参数
2.1 形参和实参
- 形参(形式参数) 定义形参就相当于在函数内部声明了变量,但是并不是赋值
- 实参(实际参数)指定了形参,那么在调用函数时必须传递实参,实参将会赋值给对应的形参,简单来说有几个形参就要有几个实参
2.2 函数的传递方式
- 定义形参时,可以为形参指定默认值。指定了默认值以后,如果用户传递了参数则默认值不会生效。如果用户没有传递,则默认值就会生效
- 位置参数:位置参数就是将对应位置的实参赋值给对应位置的形参
- 关键字参数 : 关键字参数可以不按照形参定义的顺序去传递,而根据参数名进行传递
- 混合使用位置参数和关键字参数的时候必须将位置参数写到关键字参数前面去
3. 不定长参数
- 定义函数时,可以在形参前面加一个*,这样这个形参可以获取到所有的实参,它会将所有的实参保存到一个元组中
- 带*号的形参只能有一个,可以和其他参数配合使用
- *形参只能接受位置参数,不能接受关键字参数
- **形参可以接收其他的关键字参数,它会将这些参数统一保存到字典当中。字典的key就是参数的名字,字典的value就是参数的值
- **形参只有一个,并且必须写在所有参数的后面
4. 参数的解包
- 传递实参时,也可以在序列类型的参数前添加星号,这样它会自动的将序列中元素依次作为参数传递
- 要求序列中的元素的个数必须和形参的个数一致
EXERCISE :
1. 打印名片程序:输入姓名,电话号码,性别,最后打印出来名片
• 控制姓名长度为6-20
• 电话号码长度11
• 性别只能允许输入男或女
• 每一样信息不允许为空
your_name = input('请输入您的姓名')
your_telephone_number = int(input('请输入您的电话号码'))
your_gender = input('您的性别 : 男或女')
def bussiness_card():
print('''
姓名 : {}
电话号码 : {}
性别 : {}
'''.format(your_name,your_telephone_number,your_gender))
while True :
if len(your_name ) < 6 and len(your_name ) > 10 :
print('请重新输入您6~10位的姓名')
your_name = input('请重新输入您的姓名')
continue
elif len(str(your_telephone_number)) != 11 :
print('请重新输入您11位的电话号码 : ')
your_telephone_number = int(input('请重新输入您的电话号码'))
continue
elif your_gender not in ['男','女']:
print('请重新输入您的性别')
your_gender = input('您的性别 : 男或女')
continue
else:
bussiness_card()
break
2.使用函数求前20个斐波那契数列斐波那契数列:1,1,2,3,5,8,13,21…即: 起始两项均为1,此后的项分别为前两项之和
a = [1,1]
def sum_num() :
i = 0
while i < 18 :
b = a[i]+a[i+1]
i += 1
a.append(b)
return a
c = sum_num()
print(c)
3.编写一段代码,定义一个函数求1-100之间所有整数的和,并调用该函数打印出结果
def counting(n):
sum = 0
i = 0
while i < n:
i += 1
sum += i
print(sum)
counting(100)