232 lines
7.1 KiB
Plaintext
232 lines
7.1 KiB
Plaintext
=================================
|
||
Notes
|
||
Author: Flora Chen
|
||
-_- -_- -_- -_- -_- -_- -_- -_-
|
||
=================================
|
||
|
||
******集合******
|
||
1. 集合的定义
|
||
集合: set类型, 通过{}来表示
|
||
内部的数据{value, value1, value2}
|
||
示例:
|
||
set1 = {11, 22, 33, 44, 55}
|
||
print(type(set1)) # 输出结果:<class 'set'>
|
||
|
||
2. 集合的特性
|
||
集合的数据不能存在重复的元素;
|
||
集合中的数据只能是不可变类型(数值类型,字符串,元组);
|
||
集合和字典都是无序的,没有下标索引;
|
||
集合是可变类型的数据。
|
||
集合的操作:
|
||
add: 添加数据
|
||
pop:删除数据
|
||
示例:
|
||
set1 = {11, 22, 33, 44, 55, 55}
|
||
print(set1) # 输出结果:{33, 11, 44, 22, 55}
|
||
set1.add(678)
|
||
print(set1) # 输出结果:{33, 678, 11, 44, 22, 55}
|
||
set1.pop() # 随机删除一个元素
|
||
print(set1) # 输出结果:{678, 11, 44, 22, 55}
|
||
|
||
3. 集合的应用
|
||
对数据的去重
|
||
示例:
|
||
# 对字符串去重
|
||
str1 = 'dfgdfghjkhjk'
|
||
s1 =set(str1)
|
||
print(s1) # 输出结果:{'d', 'k', 'f', 'j', 'g', 'h'}
|
||
# 对列表去重
|
||
li = [11, 11, 22, 22, 33]
|
||
s1 =set(li)
|
||
print(list(s1)) # 输出结果:[33, 11, 22]
|
||
|
||
用来区分数据是否可变
|
||
# 运行不报错的就都是不可变类型的:数值类型,字符串,元组
|
||
set1 = {111, 12.33, '243', True, (1, 2)}
|
||
|
||
# 运行报错的就都是可变类型的:列表,字典,集合
|
||
# set2 = {[1, 2, 3]} # TypeError: unhashable type: 'list'
|
||
# set3 = {{'name': 'flora'}} # TypeError: unhashable type: 'dict'
|
||
set4 = {{1,2,3}} # TypeError: unhashable type: 'set'
|
||
|
||
|
||
******数据类型总结******
|
||
1. 按数据结构分类
|
||
数值类型:整数,浮点数,布尔值
|
||
序列类型:字符串,列表,元组(可以通过下标取值,支持切片操作)
|
||
散列类型:字典,集合(元素内部是无序的,没有下标)
|
||
|
||
2. 数据类型的可变与不可变
|
||
不可变类型:数值类型,字符串,元组
|
||
字符串和元组定义之后不能修改内部结构或者值(内存单元中的值),为不可变类型
|
||
可变类型:列表,字典,集合
|
||
如何区分可变不可变数据:定义一个集合,把数据放到集合中看会不会报错。会报错的是可变类型。
|
||
|
||
******控制流******
|
||
顺序:代码从上往下执行
|
||
分支:根据不同的条件,执行不同的代码
|
||
循环:特定的代码重复执行
|
||
注意:python中通过缩进来区分代码块的。
|
||
|
||
******条件判断******
|
||
1. if语句
|
||
if 条件:
|
||
# 条件成立执行的代码块
|
||
|
||
示例:
|
||
# 用户输入考试成绩,请判断是否及格。
|
||
score = float(input('请输入您的成绩:'))
|
||
if score >= 60:
|
||
# 条件成立执行的代码块
|
||
print('考试及格!')
|
||
|
||
|
||
2. if - else语句
|
||
if 条件:
|
||
# 条件成立执行的代码块
|
||
else:
|
||
# 条件不成立执行的代码块
|
||
|
||
示例:
|
||
# 用户输入考试成绩,请判断是否及格。如果考试不及格,打印:考试不及格,晚上通宵敲代码!
|
||
score = float(input('请输入您的成绩:'))
|
||
if score >= 60:
|
||
# 条件成立执行的代码块
|
||
print('考试及格!')
|
||
else:
|
||
# 条件不成立执行的代码块
|
||
print('考试不及格,晚上通宵敲代码!')
|
||
|
||
3. if - elif - else语句
|
||
if 条件1:
|
||
# 条件成立执行的代码块
|
||
elif 条件2:
|
||
# 条件2成立执行的代码块
|
||
elif 条件3:
|
||
# 条件3成立执行的代码块
|
||
else:
|
||
# 以上条件均不成立执行的代码块
|
||
|
||
# 用户输入考试成绩,根据不同等级进行区分(A: 90分以上, B:80-90分, C: 60-80分, D:60分以下)
|
||
score = int(input('请输入您的成绩:'))
|
||
if 0 <= score < 60:
|
||
print('您的成绩为D!')
|
||
elif 60 <= score < 80:
|
||
print('您的成绩为C!')
|
||
elif 80 <= score < 90:
|
||
print('您的成绩为B!')
|
||
elif 90 <= score < 100:
|
||
print('您的成绩为A!')
|
||
else:
|
||
print('您输入的成绩有误!')
|
||
|
||
|
||
4. 多个条件同时判断
|
||
# 登录小案例:事先存储一组账号密码,提示用户输入账号和密码,然后判断账号密码是否输入正确
|
||
user_info = {'user': 'flora', 'pwd': '123455555Az'}
|
||
|
||
username = input('请输入账号:')
|
||
passwd = input('请输入密码:')
|
||
|
||
# 方式一:使用嵌套方式
|
||
if username == user_info['user']:
|
||
if passwd == user_info['pwd']:
|
||
print('账号密码输入正确!')
|
||
else:
|
||
print('密码输入不正确!')
|
||
else:
|
||
print('账号输入不正确!')
|
||
|
||
# 方式二:使用逻辑运算符去判断多个条件
|
||
if username == user_info['user'] and passwd == user_info['pwd']:
|
||
print('账号密码输入正确!登录成功!')
|
||
else:
|
||
print('账号或密码输入不正确!登录失败!')
|
||
|
||
总结:
|
||
使用if开启一个条件判断语句:
|
||
一个条件语句中只有一个if,但是一个条件语句中可以有多个或者一个或者零个elif;
|
||
一个条件语句中只有一个或者零个else。
|
||
if判断成立的标准:
|
||
if成立的标准是根据if后面的python表达式或者数据的布尔值是否为True来确定条件是否成立
|
||
|
||
******python中数据的布尔值******
|
||
非0位True:None, 数字0或者数据长度为0(len())的布尔值为False, 其他数据布尔值都是True;
|
||
数据长度为0, 例如:空字符串,空列表,空元祖,空字典
|
||
|
||
示例:
|
||
str1 = 'python'
|
||
li = [1, 2, 2]
|
||
if li:
|
||
print('成立!')
|
||
else:
|
||
print('不成立!')
|
||
|
||
******while循环(条件循环)******
|
||
1. while循环的使用
|
||
如果条件一直成立,则一直循环做条件满足的事情,直到条件不成立,结束循环。
|
||
while 条件:
|
||
# 条件成立,循环执行的代码块
|
||
# 条件成立,循环执行的代码块
|
||
# 条件成立,循环执行的代码块
|
||
# ......
|
||
|
||
示例:
|
||
# 创建一个变量来保存循环的次数
|
||
i = 0
|
||
while i < 5:
|
||
print('hello python')
|
||
i += 1 # i = i + 1
|
||
# 输出结果:
|
||
"""
|
||
hello python
|
||
hello python
|
||
hello python
|
||
hello python
|
||
hello python
|
||
"""
|
||
2. 死循环以及相关案例的使用
|
||
死循环:循环的条件一直成立,在循环体中无限循环,称之为死循环。
|
||
避免写代码的过程中因为逻辑问题,造成代码死循环。
|
||
示例:
|
||
while True:
|
||
print('hello python')
|
||
|
||
3. break强制跳出循环
|
||
死循环在特定的需求下,我们也会使用,再循环内部要实现跳出循环的机制(合理使用break)。
|
||
示例:
|
||
while True:
|
||
user_info = {'user': 'flora', 'pwd': '123455555Az'}
|
||
username = input('请输入账号:')
|
||
passwd = input('请输入密码:')
|
||
|
||
if username == user_info['user'] and passwd == user_info['pwd']:
|
||
print('账号密码输入正确!登录成功!')
|
||
break
|
||
else:
|
||
print('账号或密码输入不正确!请重新输入!')
|
||
|
||
4. 循环内嵌套条件语句
|
||
示例:
|
||
# 打印3次之后强制退出循环
|
||
i = 0
|
||
while i < 5:
|
||
print('hello python')
|
||
i += 1 # i = i + 1
|
||
# 当i=3时,退出循环
|
||
if i == 3:
|
||
break
|
||
|
||
5. continue终止本轮循环,直接进行下次循环的条件判断
|
||
示例:
|
||
# 第5-7次不打印
|
||
i = 0
|
||
while i < 10:
|
||
i += 1 # i = i + 1
|
||
# 当i在5~7之间,则执行continue终止本轮循环,进行下轮循环的条件判断
|
||
if 5 <= i <= 7:
|
||
continue
|
||
print('hello python')
|
||
|
||
|