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)