Python基础语法小结4(集合&函数)
一、集合
1.集合的定义
Python中的集合类似于数学中的集合概念,它是一组无序、不可重复元素序列,集合用{value1,value2}创建,某种程度上可以把集合看作是没有值的字典。字典是dict = {key:value,key2:value2,}需要key。
特点:1、不同元素组成 2、无序 3、集合中的元素必须是不可变类型
1)自动去重
set1 = {1, 2, 4, 3, 3, 4, 4, 3, 3, 2, 2, 2, 2, 1}
print(set1) # {1, 2, 3, 4}
len(set('1232')) # 3
len('1232') # 4
2)打印内容是无序的
集合的元素是无序的,因此打印的时候,也是无序的
set_0 = {"cheney","真","是","帅"}
print(set_0) # {'是', '帅', 'cheney', '真'}
3)集合中的元素必须是不可变类型
集合类型要求元素是独一无二的,不能存在相同的元素,但是如果其中的某一个元素是可以被改变的,它一旦改变之后可能会和其他的元素相同,这样子的话集合类型就会出现错误,所以集合类型要求,该元素不能是可变数据类型
2.集合的创建
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
s = {'s', 'e', 't'}
s = set(['a, b, c, d, e'])
创建空集合必须用set()
set = set() # 创建空集合必须用这种方式
dict = {} # 使用这种方式创建的为空的字典
3.集合的使用(常用方法)
1)add()
- add() 方法用于给集合添加元素,如果添加的元素在集合中已存在,则不执行任何操作。
- 注意: list,dict 都不能嵌入到集合
2)clear()
- **描述:**clear() 方法用于移除集合中的所有元素。
3)pop()
- 描述:pop() 方法用于随机移除一个元素,一般是删除最开始的一个元素
4)remove()
- **描述:**remove() 方法用于移除集合中的指定元素。该方法不同于discard()方法,因为 remove() 方法在移除一个不存在的元素时会发生错误,而 discard() 方法不会。
5)update()
- **描述:**update() 方法用于修改当前集合,可以添加新的元素或集合到当前集合中,如果添加的元素在集合中已存在,则该元素只会出现一次,重复的会忽略。
4.集合的运算
- & 交集运算
- | 并集运算
- — 差集运算
- ^ 亦或集运算
a = set('abracadabra')
b = set('alacazam')
print('a = ', a)
print('b = ', b)
print('a - b = ', a - b) # 集合a中包含而集合b中不包含的元素
print('a | b = ', a | b) # 集合a或b中包含的所有元素
print('a & b = ', a & b) # 集合a和b中都包含了的元素
print('a ^ b = ', a ^ b) # 不同时包含于a和b的元素
输出结果:
a = {'c', 'a', 'b', 'd', 'r'}
b = {'c', 'a', 'm', 'l', 'z'}
a - b = {'d', 'r', 'b'}
a | b = {'c', 'a', 'b', 'm', 'd', 'l', 'r', 'z'}
a & b = {'c', 'a'}
a ^ b = {'r', 'm', 'd', 'l', 'b', 'z'}
二、函数
1.函数定义
- 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
- 函数能提高应用的模块性,和代码的重复利用率。已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。
2.定义一个函数
- 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。
- 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
- 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
- 函数内容以冒号 : 起始,并且缩进。
- return [表达式] 结束函数,选择性地返回一个值给调用方,不带表达式的 return 相当于返回 None。
1)让我们使用函数来输出"Hello World!"
def hello() :
print("Hello World!")
hello()
注意:函数必须调用才能使用,否则没有效果
2)函数中带上参数变量
def max_num(a, b):
if a > b:
return a
else:
return b
a = 4
b = 5
print(max_num(a, b))
3)Python中函数的参数
- 可以分为两大类形参和实参
def func(x, y): # x, y 就是形参
print(x, y)
func(2, 3) # 2, 3 就是实参
- 关键字参数
def func(x, y, z):
print(x, y, z)
func(1, z = 2, y = 3)
使用注意点:
- 在调用函数时,位置实参 必须在 关键字实参的前面~
def func(x, y, z):
print(x, y, z)
# 位置参数和关键字参数混合使用的时候
func(1, z = 2, y = 3) # 正确
func(x = 1, z = 2, 3) # 错误
- 一个形参不能重复传值
def func(x, y, z):
print(x, y, z)
func(1, x = 2, y = 3, z = 4) # 错误,形参 x 重复传值
4)不定长参数
在定义函数时,若不确定调用时需要传入多少个参数,这时就可以使用可变长参数,即实参的个数不固定
可变长参数 可以分为两类:
- 按位置定义的可变长度的实参(*)
- 按关键字定义的可变长度的实参(**)
- 按位置定义的可变长度的实参
def func(x, y, *args, z): # *args 会把传入的 多余的 参数以一个元组的形式存放,元组的变量名就是args
print(x, y)
print(args)
print(z)
func(1, 2, 3, 4, 5, z=6) # x=1, y=2, args=(3,4,5),z=6
注意:不定长参数必须放到位置实参后面,关键字实参的前面
三、作业
1.作业1
打印名片程序:输入姓名,电话号码,性别,最后打印出来名片
• 控制姓名长度为6-20
• 电话号码长度11
• 性别只能允许输入男或女
• 每一样信息不允许为空
代码:
name = input("请输入您的姓名:")
tel = input("请输入您的电话号码:")
gender = input("请输入您的性别:")
def fun():
if len(name) <= 20 and len(name) >= 6:
print("您的姓名:", name)
elif len(name) == 0:
print("您的姓名输入为空")
else:
print("您的姓名输入有误!")
if len(tel) == 11:
print("您的电话号码:", tel)
elif len(tel) == 0:
print("您的电话号码输入为空")
else:
print("您的电话号码输入有误!")
if gender == "男" or gender == "女":
print("您的性别:", gender)
elif len(gender) == 0:
print("您的性别输入为空")
else:
print("您的性别输入有误!")
f = fun()
2.作业2
使用函数求前20个斐波那契数列斐波那契数列:1,1,2,3,5,8,13,21...
即: 起始两项均为1,此后的项分别为前两项之和
代码:
def fib_loop_for(n):
a, b = 1, 1
for j in range(n):
a, b = b, a + b
return a
for i in range(20):
print(fib_loop_for(i), end=' ')
3.作业3
编写一段代码,定义一个函数求1-100之间所有整数的和,并调用该函数打印出结果
代码:
def sum_num(n):
num = 0
for i in range(1, n+1):
num += i
return num
print(sum_num(100))