for循环:
通常用于可迭代对象的遍历
可迭代对象可以是元组、字符串、列表,字典
for 变量 in 可迭代对象:
循环语句
# for循环练习
for x in range(100):
if x % 3 == 0:
print(x, end='\t')
# 遍历字典
# 遍历字典所有的key
for x in d:
print(x, end='\t')
print('\n')
# 遍历字典所有的key
for x in d.keys():
print(x, end='\t')
print('\n')
# 遍历字典所有的value
for x in d.values():
print(x, end='\t')
print('\n')
# 遍历字典所有的键值对
for x in d.items():
print(x, end='\t')
print()中.format()使用:
print('{0}*{1}={2}'.format(int0, int2, int2))
嵌套循环练习:
# 九九乘法表
for x in range(1, 10):
for y in range(1, 10):
if y >= x:
print('{0}*{1}={2}'.format(x, y, x*y), end='\t')
print()
break语句:
用来中断while语句和for语句
当有嵌套,跳出最近一层循环
continue语句:
用于结束本次循环,继续下一次,当有嵌套时,作用于最近一层循环
# break练习
for x in range(1, 100):
for y in range(1, 10):
if y >= x:
print('{0}*{1}={2}'.format(x, y, x*y), end='\t')
print()
if x >= 9:
break
# continue练习
for x in range(1, 10):
for y in range(1, 100):
if y <= 9:
if y >= x:
print('{0}*{1}={2}'.format(x, y, x * y), end='\t')
else:
continue
print()
循环else语句(else可选):
如果循环被break中断,不执行else,反之执行
循环代码优化:
尽量避免循环内部不必要的计算
嵌套循环中,尽量避免内层循环的计算,尽可能往外层放
尽量使用局部变量,速度较快
连接字符串尽量使用join()而不是+
列表插入和删除尽量在尾部操作
zip()并行迭代:
zip()函数可以对多个序列进行并行迭代,并在最短的序列用完时停止
# zip()并行迭代
r1 = ['数学', '英语', '语文', '体育']
r2 = [89, 78, 90, 'A']
r3 = ['良', '良', '优', '优']
for 科目, 分数, 评级 in zip(r1, r2, r3):
print('{0}, {1}, {2}'.format(科目, 分数, 评级))
推导式:
推导式是从一个或多个迭代器快速创建序列的一种方法,它可以将循环和条件判断结合,从而简化代码
列表推导式:
通过推导生成列表对象
[表达式 for item in 可迭代对象 if 条件判断]
# 推导式
a = [x**y for x in range(20) if x % 5 == 0 for y in range(5)]
print(a)
# 循环
b = []
for x in range(20):
for y in range(5):
if x % 5 == 0:
b.append(x**y)
print(b)
字典推导式:
通过推导生成字典对象
{key_expression:value_expression for 表达式 in 可迭代对象}
# 推导式
a = 'nfakshfaf afksjfasfhauf hafjbajskfhasoifjsa;'
b = {k:a.count(k) for k in a if k != ' '}
print(b)
# 循环
c = {}
for x in a:
if x != ' ':
c[x] = a.count(x)
print(c)
集合推导式:
集合包含的是字典的key值,不可重复
{表达式 for item in 可迭代对象 if 条件判断}
# 推导式
a = {x**y for x in range(20) if x % 5 == 0 for y in range(5)}
print(a)
# 循环
b = set()
for x in range(20):
for y in range(5):
if x % 5 == 0:
b.add(x**y)
print(b)
生成器推导式(用来生成元组):
推导式返回的是生成器而不是元组,生成器只能使用一次
元组无法增加修改和删除
(表达式 for item in 可迭代对象 if 条件判断)
# 推导式
a = (x**y for x in range(20) if x % 5 == 0 for y in range(5)) # 生成生成器
a = tuple(a)
print(a)
练习:
# turtle绘画不同颜色的同心圆
import turtle
p = turtle.Pen()
x = 0
r = 10
s = ['red', 'blue', 'yellow']
for x in range(20):
p.penup()
p.goto(0, -(x * r))
p.pendown()
p.color(s[x%len(s)])
p.circle((x * r) + 10)
turtle.done()
# turtle画棋盘
import turtle
p = turtle.Pen()
for x in range(20):
p.penup()
p.goto(0, x*15)
p.pendown()
p.goto((len(range(20))-1)*15, x*15)
p.penup()
p.goto(x*15, 0)
p.pendown()
p.goto(x*15, (len(range(20))-1)*15)
turtle.done()
函数的用法和底层分析:
函数是可以反复使用的代码块
python中函数分为几类:
内置函数:len(), str()等
标准库函数:通过import导入库,然后使用
第三方函数:python社区提供的库
自定义函数:用户自己定义的函数
定义函数:
def 函数名 ([参数列表]):
'''文档字符串''' # 函数说明,相当于注释
函数体
# 定义函数
def testfunction():
print('test successful')
testfunction() # 调用函数
形式参数和实际参数:
当有多个参数,用逗号隔开
形式参数不需要声明类型,也不需要指定函数的返回值类型
实际参数必须与列表一一对应
形参是函数名后面括号里的参数,是在定义函数时使用的,形参的命名只要符合标识符命名规则即可
在调用函数时,实际传递的参数是实参
# a, b是形参
def whichmax(a, b):
if a < b:
print('{0} is max'.format(b))
elif a > b:
print('{0} is max'.format(a))
elif a == b:
print('They are equal')
whichmax(10, 90) # 10,90是实参
whichmax(10, 10) # 10是实参
文档字符串(函数的注释):
通过三个三引号或双引号来实现,中间可以加入多行文字进行说明
可以调用help()输出函数的文档字符串
help(函数名.__doc__)
help(whichmax.__doc__)
返回值:
如果函数包含return语句,则结束函数并返回值
如果函数不包含return语句,则返回None值