一,for循环
for 变量 in 可迭代对象 :
循环体语句
注意:for循环其实是将可迭代对象依此赋给变量。包含range迭代器
用for循环遍历可迭代对象,代码如下:
for i in [1,2,3]:
print(i)
1
2
3
>>> for i in (1,2,3):
print(i)
1
2
3
>>> for i in {1,2,3}:
print(i)
1
2
3
>>> d={1:2,2:3}
>>> for i in d:
print(i)
1
2
>>> for i in d.items():
print(i)
(1, 2)
(2, 3)
>>> for i in '123':
print(i)
1
2
3
练习:
1,计算0到100的总和,奇数和,以及偶数和
sum=0
sum_odd=0
sum_even=0
for i in range(101):
sum+=i
if i%2==1:
sum_odd+=i
else:
sum_even+=i
print(sum)
print(sum_even)
print(sum_odd)
print('0到100的总和为{0},奇数和为{1},偶数和为{2}'.format(sum,sum_odd,sum_even))
2,打印9*9乘法表
for m in range(1,10):
for n in range(1,m+1):
print('{0}*{1}={2}'.format(m,n,m*n),end='\t')
print()
3,用字典打印一个表格
r1=dict(name='g1',age=18,salary=30000)
r2=dict(name='g2',age=19,salary=20000)
r3=dict(name='g3',age=20,salary=10000)
q=[r1,r2,r3]
for i in q:
print(i)
#复习
for i in range(3):
print(q[i].get('name'),'\t',q[i].get('age'),'\t',q[i].get('salary'),'\t')
二,其他语句
1,break语句:跳出循环,只能跳出一层循环
2,continue语句:结束本次循环,立即开始下一次循环
3,else语句:跟在循环体后面,则循环体正常结束的时候执行该语句,若遇break则不执行。
练习,从键盘上输入员工工资,按q或Q结束,最后统计员工数,平均薪资并打印各自的薪资
num=0
salarys=[]
salarysum=0
while True:
salary=input('请输入一个员工的薪资(按q或Q结束):')
if salary.upper()=='Q':
print('输入结束')
break
if salary.isdigit()==0:
print('请输入正数或Q')
continue
else:
num+=1
salarys.append(salary)
salarysum+=float(salary)
print('总人数为{0},薪资为{1},平均薪资为{2}'.format(num,salarys,salarysum/num))
三,循环代码优化问题
1,尽量减少循环内部不必要的运算,尽量放在循环外
2,尽量减少内层循环的计算,放在外层循环
3,尽量使用局部变量,局部变量查询快
4,连接多个字符时使用join(),而不用+号
5,尽量在列表尾部进行操作
四,zip()并行迭代
注意:tuple()创建元组,里面为可迭代对象
names=('g1','g2','g3','g4')
ages=(18,19,20,21)
for name,age in zip(names,ages):
print(tuple([name,age]))
五,推导式创建序列
1,推导式创建列表
注意:条件前加if,列表等集合不能没定义就使用
a=[x*2 for x in range(50) if x%5==0]
print(a)
# 普通方法
b=[]
for i in range(50):
if i%5==0 :
b.append(i*2)
print(b)
a=[(x,y) for x in range(5) for y in range(5) if x%2==0 and y%2==0]
print(a)
2,字典用推导式实现
text='123452133124132'
dict1={c:text.count(c) for c in text}
print(dict1)
#普通代码实现
a={}
for i in text:
c=text.count(i)
a[i]=c
print(a)
统计数字出现次数
3,集合推导式
字典推导式取消值对象即可
4,生成器推导式(元组推导式)
a=(x for x in range(5))
print(tuple(a))
#生成生成器
for x in a :
print(x)
第二次打印为空,因为指针已经偏移
六,海归绘图
用t=turtle.Pen()可用t代替turtle前缀
但t.done()不可行,要用turtle.done()
t.speed()可调整速度。0最快,1最慢
例子:画一个18*18的棋盘
import turtle
t=turtle.Pen()
t.speed(0)
for i in range(19):
t.penup()
t.goto(-180,180-20*i)
t.pendown()
t.goto(180,180-20*i)
for i in range(19):
t.penup()
t.goto(-180+20*i,180)
t.pendown()
t.goto(-180+20*i,-180)
turtle.done()
2,生成十个同心圆。
import turtle
t=turtle.Pen()
t.speed(0)
t.width(5)
color=['red','yellow','blue','black','green']
for i in range(10):
t.penup()
t.goto(0,-20*i)
t.pendown()
t.color(color[i%5])
t.circle(10+20*i)
turtle.done()
七,函数(可重用的代码段)
1,python函数分类:(1)内置函数:如str(),len()
(2)标准库函数:直接用import()引入
(3)第三方库函数:下载后用import()引入
(4)用户自定义函数
2,函数定义与调用
def sum(a,b):
c=a+b
return c%7
sum=sum(10,20)
print(sum)
def sum(a,b):
c=a+b
return [c,a,b]
sum=sum(10,20)
print(sum)
要点:(1)形参与实参
(2)返回值:return语句,结束函数并返回值两个功能。
返回多个返回值用集合储存起来。
(3)文档字符串:用来说明函数功能。可用help(函数名.doc)查看
注意文档字符串虽然为注释但一定要缩进,不然程序会 报错。
def sum(a,b):
'''求和'''
c=a+b
return [c,a,b]
sum1=sum(10,20)
print(sum1)
x=help(sum.__doc__)
print(x)
来源:CSDN
作者:pu_pupupupupu
链接:https://blog.csdn.net/pu_pupupupupu/article/details/104577917