1.for循环和可迭代对象遍历
for循环通常用于可迭代对象的遍历,语法格式如下:
for 变量 in 可迭代对象:
循环体语句
for x in (10,20,30): print(x*3) for y in 'asdfe': print(y) a={'name':'Bob','age':18,'sex':'male'} for b in a: #遍历所有的key print(b) for x in a.keys(): #遍历所有的key print(x) for x in a.values(): #遍历所有的值 print(x) for x in a.items(): #遍历所有的键值对 print(x) #('name', 'Bob')元组
0-100求和
sum_all=0 for x in range(101): sum_all+=x print(sum_all)
2.嵌套循环
for x in range(5): for y in range(5): print(x,end='\t') print() #起到换行的作用 ''' 0 0 0 0 0 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4 '''
打印九九乘法表
z=0 for x in range(1,10): for y in range(1,x+1): z=x*y print('{0}*{1}={2}'.format(x,y,z),end='\t') print() #起到换行的作用
储存表格信息并且进行选择
#使用列表和字典储存表格信息 tb=[] r1={'name':'高小一','age':18,'salary':30000,'city':'Beijing'} r2={'name':'高小二','age':19,'salary':40000,'city':'Shanghai'} r3={'name':'高小三','age':20,'salary':50000,'city':'Shenzhen'} tb=[r1,r2,r3] for x in tb: if x.get('salary')>15000: print(x)
3.break语句
break语句可用于while和for循环,用来结束整个循环,当有嵌套循环时,break语句只能跳出最近一层的循环。
#测试break while True: a=input('请输入一个字符(输入Q或q时退出):') if a=='Q' or a=='q': print('循环结束,退出') break else: print(a)
continue语句
continue语句用于结束本次循环,继续下一次,多个循环嵌套时,continue也是应用于最近的一层循环。
#测试continue emNum=0 salarySum=0 salarys=[] while True: s=input('请输入员工的工资(按Q或q结束):') if s=='Q': print('录入完成,退出。') break if float(s)<0: continue #退出了这次循环进行下一次 emNum+=1 salarySum+=float(s) salarys.append(float(s)) print('员工数{0}'.format(emNum)) print('录入薪资:',salarys) print('平均薪资{0}'.format(salarySum/emNum))
4.else语句
while、for循环可以附带一个else语句(可选)。如果for、while语句没有被break语句结束,则会执行else子句。否则不执行。
#测试else salarySum=0 salarys=[] for i in range(4): s=input('请输入一共4名员工的薪资(按Q或q中途结束)') if s=='Q' or s=='q': print('录入完成,退出') break if float(s)<0: continue salarys.append(float(s)) salarySum+=float(s) else: print('您已全部录入4名员工的薪资') print('录入薪资:',salarys)
5.循环代码优化(循环次数较多)
(1)尽量减少循环内部不必要的运算。
(2)嵌套循环中,尽量减少内层循环的计算,尽可能向外提。
(3)局部变量查询较快,尽量使用局部变量。
(4)连接多个字符串,使用join而不使用+。
(5)列表进行元素插入和删除,尽量在尾部进行。
6.使用zip()并行迭代
zip()函数对多个序列进行迭代
names=('张三','李四','王五') ages=(20,17,18) jobs=('老师','工人','程序员') for name,age,job in zip(names,ages,jobs): print('{0}--{1}--{2}'.format(name,age,job)) for i in range(3): print('{0}--{1}--{2}'.format(names[i],ages[i],jobs[i]))
7.推导式创建序列
列表推导式
列表推导式生成列表对象,语法如下:
[表达式 for item in 可迭代对象]
y=[x*2 for x in range(1,5)] print(y) cells=[(row,col) for row in range(1,10) for col in range(1,10)] print(cells)
字典推导式
{key:value for value for 表达式 in 可迭代对象}
my_text='I love you,i love the sunshine,i love the way you lie' char_count={c:my_text.count(c) for c in my_text} #确定键和值 print(char_count)
#用循环实现相同功能 a={} for i in my_text: a[i]=my_text.count(i) print(a)
集合推导式
{表达式 for item in 可迭代对象}
b={x for x in range(1,101) if x%9==0} print(b) #{99, 36, 72, 9, 45, 81, 18, 54, 90, 27, 63}
生成器推导式(用于生成元组)
一个生成器只能运行一次,用过不可再用。
#生成器推导式生成元组,gnt是生成器,生成器是可迭代对象 gnt=(x for x in range(4)) print(gnt) #<generator object <genexpr> at 0x0000021868F40660> print(tuple(gnt)) #(0, 1, 2, 3) print(tuple(gnt)) #()
8.画同心圆练习
import turtle t=turtle.Pen() my_color=('red','green','yellow','black','purple','orange') t.width(4) t.speed(0) for i in range(50): t.penup() t.goto(0,10-i*10) t.pendown() t.color(my_color[i%len(my_color)]) t.circle(10+i*10) turtle.done()#程序执行完,窗口仍然在
9.函数用法和底层分析
函数是可重用的程序代码块。python中,定义函数的语法如下:
def 函数名([参数列表]):
'''文档字符串'''
函数体/若干语句
要点:
使用def来定义函数,def之后是空格,然后是函数名和(),Python执行def时,会创建一个函数对象,并绑定到函数名变量上。
10.形参和实参
文档字符串(函数的注释)
#测试形参、实参的基本用法 def printMax(a,b): '''用于比较两个数字的大小,打印大的数''' if a>b: print(a,'较大值') else: print(b,'较大值') printMax(10,20) help(printMax.__doc__)
11.return()详细解释
#测试返回值的基本用法 def add(a,b): print('计算两个数的和:{0},{1},{2}'.format(a,b,a+b)) return a+b def t02(): print('sxt') print('gao') return print('hello') #return两个作用:1.返回值 2.结束函数的执行 def t03(x,y,z): return[x*10,y*10,z*10]#输出列表 c=add(30,40) print(add(30,40)*10) t02() b=t03(1,2,3) print(b)