1.循环结构
1.1for 循环和可迭代对象遍历
for 循环通常用于可迭代对象的遍历。
# for 循环的语法格式
for 变量 in 可迭代对象:
循环体语句
for x in (20,30,40):
print(x*3)
1.1.1可迭代对象
Python 包含以下几种可迭代对象:
- 序列。包含:字符串、列表、元组
- 字典
- 迭代器对象(iterator)
- 生成器函数(generator)
- 文件对象
遍历字符串中的字符
# 字符串遍历
a = 'hello*world'
for i in a:
print(i)
h
e
l
l
o
*
w
o
r
l
d
遍历列表中的字符
a = ['hello','*','world']
for i in a:
print(i)
hello
*
world
遍历元组中的字符
# 元组遍历
a = ('hello','*','world')
for i in a:
print(i)
hello
*
world
遍历字典中的字符
# 字典遍历
# 1.遍历字典所有的 key
a = {'key_1':'hello','key_2':'*','key_3':'world'}
for i in a:
print(i)
# 2.遍历字典所有的 values
for i in a.values():
print(i)
# 3.遍历字典所有的 元素(键值对)
for i in a.items():
print(i)
key_1
key_2
key_3
hello
*
world
('key_1', 'hello')
('key_2', '*')
('key_3', 'world')
1.1.2range 对象
range 对象是一个迭代器对象,用来产生指定范围的数字序列。
格式为: range(start, end [,step])
生成的数值序列从 start 开始到 end 结束(不包含 end)。若没有填写 start,则默认从 0 开始。step 是可选的步长,默认为 1。
# 计算 1-100 之间数字的累加和
sum = 0
for i in range(101):
sum += i
print(sum)
# 计算 1-100 之间偶数的累加和
for i in range(101):
if i%2 ==0:
sum += i
print(sum)
# 计算 1-100 之间偶数的累加和
sum = 0
for i in range(101):
if i%2 ==0:
sum += i
print(sum)
# 计算 1-100 之间奇数的累加和
sum = 0
for i in range(101):
if i%2 !=0:
sum += i
print(sum)
1.1.2嵌套循环
一个循环体内可以嵌入另一个循环,一般称为“嵌套循环”,或者“多重循环”。
打印九九乘法表
for i in range(1,10):
for j in range(1,i+1):
print(f'{i}*{j}={i*j}',end='\t')
print()
1*1=1
2*1=2 2*2=4
3*1=3 3*2=6 3*3=9
4*1=4 4*2=8 4*3=12 4*4=16
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49
8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
1.2退出循环
1.2.1break 语句
break 语句可用于 while 和 for 循环,用来结束整个循环。当有嵌套循环时,break 语句只能跳出最近一层的循环。
while True:
num = int(input('猜一个0-10的数字:'))
if num == 7:
print('猜对了')
break
print('这句话不会被执行')
print('猜错了,继续')
break 后面的循环语句不会执行
1.2.2continue 语句
continue 语句用于结束本次循环,继续下一次。多个循环嵌套时,continue 也是应用于最 近的一层循环。
for i in range(10):
if i == 3:
print('3跳过了')
continue
print(i)
0
1
2
3跳过了
4
5
6
7
8
9
1.3else 语句
while、for 循环可以附带一个 else 语句(可选)。如果 for、while 语句没有被 break 语句 结束,则会执行 else 子句,否则不执行。
while 条件表达式:
循环体
else:
语句块
或者:
for 变量 in 可迭代对象:
循环体
else:
语句块
1.4推导式创建序列
推导式是从一个或者多个迭代器快速创建序列的一种方法。它可以将循环和条件判断结合, 从而避免冗长的代码。
1.4.1列表推导式
列表推导式生成列表对象,语法如下:
[表达式 for item in 可迭代对象 ]
或者:{表达式 for item in 可迭代对象 if 条件判断}
list1 = [i for i in range(10)]
print(list1)
[0,1,2,3,4,5,6,7,8,9]
# 加if
list2 = [i for i in range(10) if i%2 ==0]
print(list2)
[0,2,4,6,8]
# 嵌套
# [(1,0),(1,1),(1,2),(2,0),(2,1),(2,2)]
list3 = [(i,j) for i in range(1,3) for j in range(3)]
print(list3)
1.4.2字典推导式
字典的推导式生成字典对象,格式如下:
{key_expression : value_expression for 表达式 in 可迭代对象}
# 合并列表
list1 = ['name','age','gender']
list2 = ['Tom',20,'man']
dict1 = {list1[i]:list2[i] for i in range(len(list1))}
print(dict1)
类似于列表推导式,字典推导也可以增加 if 条件判断、多个 for 循环。
1.4.3集合推导式
集合推导式生成集合,和列表推导式的语法格式类似:
{表达式 for item in 可迭代对象 }
或者:{表达式 for item in 可迭代对象 if 条件判断}
set1 = {i for i in range(10)}
print(set1)
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
1.4.4生成器推导式(生成元组)
(x for x in range(1,100) if x%2==0)
<generator object <genexpr> at 0x0000000002BD3048>
# 提示的是“一个生成器对象”。显然,元组是没有推导式的
一个生成器只能运行一次。第一次迭代可以得到数据,第二次迭代数据就没有了。
# 1.用列表和字典存储下表信息,并打印出表中年龄 大于18 的数据
d1 = {'name':'Tom','age':16,'id':111}
d2 = {'name':'小明','age':19,'id':112}
d3 = {'name':'Rose','age':20,'id':113}
list1 = [d1,d2,d3]
for i in list1:
if i.get('age') > 18:
print(i)
{'name': '小明', 'age': 19, 'id': 112}
{'name': 'Rose', 'age': 20, 'id': 113}
2.函数
函数是可重用的程序代码块。函数的作用,不仅可以实现代码的复用,更能实现代码的一致性。一致性指的是,只要修改函数的代码,则所有调用该函数的地方都能得到体现
2.1函数的基本概念
- 一个程序由一个个任务组成;函数就是代表一个任务或者一个功能。
- 函数是代码复用的通用机制。
2.2Python 函数的分类
Python 中函数分为如下几类:
1. 内置函数 我们前面使用的 str()、list()、len()等这些都是内置函数,我们可以拿来直接使用。
2. 标准库函数 我们可以通过 import 语句导入库,然后使用其中定义的函数
3. 第三方库函数 Python 社区也提供了很多高质量的库。下载安装这些库后,也是通过 import 语句导入,然后可以使用这些第三方库的函数
4. 用户自定义函数 用户自己定义的函数。
2.3函数的定义和调用
Python 中,定义函数的语法如下:
def 函数名 ([参数列表]) :
'''文档字符串'''
函数体/若干语句
- 我们使用 def 来定义函数,然后就是一个空格和函数名称;
(1) Python 执行 def 时,会创建一个函数对象,并绑定到函数名变量上。 - 参数列表
(1) 圆括号内是形式参数列表,有多个参数则使用逗号隔开
(2) 形式参数不需要声明类型,也不需要指定函数返回值类型
(3) 无参数,也必须保留空的圆括号
(4) 实参列表必须与形参列表一一对应 - return 返回值
(1) 如果函数体中包含 return 语句,则结束函数执行并返回值;
(2) 如果函数体中不包含 return 语句,则返回 None 值。 - 调用函数之前,必须要先定义函数,即先调用 def 创建函数对象
(1) 内置函数对象会自动创建
(2) 标准库和第三方库函数,通过 import 导入模块时,会执行模块中的 def 语句
2.4形参和实参
形式参数是在定义函数时使用的。 形式参数的命名只要符合“标 识符”命名规则即可。
在调用函数时,传递的参数称为“实际参数”,简称“实参”。
2.5函数的注释
程序的可读性最重要,一般建议在函数体开始的部分附上函数定义说明,这就是“文档字符 串”,也有人成为“函数的注释”。我们通过三个单引号或者三个双引号来实现,中间可以加入多行文字进行说明。
help(函数名.doc)可以打印输出函数的文档字符串。
2.6返回值
- 如果函数体中包含 return 语句,则结束函数并执行返回值;
- 如果函数体中不包含 return 语句,则返回 None 值。
- 要返回多个返回值,使用列表、元组、字典、集合将多个值“存起来”即可。return a ,b默认是元组类型。