for 循环
九九乘法表:
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()
表格:
r1={'姓名':'高小一','年龄':'18','薪资':30000,'城市':'上海' }
r2={'姓名':'高小二','年龄':'19','薪资':20000,'城市':'北京' }
r3={'姓名':'高小三','年龄':'20','薪资':10000,'城市':'南京' }
s=[r1,r2,r3]
for x in range(3):
print(s[x])
if s[x].get('薪资')>15000:
print('纳税')
注意:字典建立时:先把每部分用变量表示,随后将其用dict(r1,r2.。。)统一到一个列表中
while语句
while
break:表示中断循环,跳出整个循环
例子:
s = []
while True:
a = input('请输入员工工资:')
if a.upper() == 'Q':
print('录入完成')
break
elif float(a) < 0:
continue
elif float(a) >= 0:
s.append(float(a))
b = sum(s)
print('总工资是{0}'.format(b))
print('平均薪资是:{0}'.format(b/len(s)))
嵌套语句的细节:
尽量将内层嵌套全部搬到外层中,可以节省大量的运算,提升程序质量
列表频繁的数据尽量将数据放到最后,可以减少计算
while else语句
如果循环过程中并未执行break语句,在循环次数结束后,就会执行else语句,中间如果break,就不会只执行else语句
一下读取多个序列(元组):zip函数
第一部分的程序为zip函数,第二部分为一般方法
推导式
列表推导式:[x*2 for x in range(5)]
字典推导式:a={m:m.upper for m in s}
用两种方法显示一个字符串中各的数量:
a='i love you, i love dxt, i love gq'
b=[]
for m in a:
if a.count(m)>=1:
if b.count(m)==0:
b.append(m)
for n in b:
print('{0}:{1}'.format(n,a.count(n)),end='\t')
#普通方法
print('***************************')
s={n:a.count(n) for n in a}
print(s)
#推导式
集合推导式:
{x for x in range(10)}
生成器推导式(元组生成器):
(x for x in range(10))
元组生成器生成的数据只能使用一次
画棋盘:
import turtle
t=turtle.Pen()
turtle.speed(10)
for m in range(19):#0 1 2 3
t.goto(0,m*10)
t.pendown()
t.goto(180,m*10) #x:180 180 180 y:m*10
t.penup()
for n in range(19):
t.penup()
t.goto(n*10,180)
t.pendown()
t.goto(n*10,0)
自定义函数:
def 函数名(变量)
#函数解释
函数体
函数也是对象
尽量使用局部变量,效率高,全局变量与局部变量重名时,系统优先使用局部变量
浅拷贝:只拷贝该对象本身,不拷贝子对象
深拷贝:拷贝该对象和子对象
使用时:浅拷贝中,复制出来的子对象的修改会导致原对象的变化,而深拷贝不会
不可变对象的拷贝是浅拷贝
函数定义时:形参如果有带默认值,则应放在无默认值的形参后面
如果放在前面,就要在使用函数时强制命名
函数定义时:有两种新的定义方式:
def hanshuming(a,b,*c):*c表示将a,b后的数据保存在一个元组中
def hanshuming(a,b,**c):**c表示将a,b后的数据保存在一个元组中
lambde表达式(匿名函数)
f=lambde 形参:表达式
f=[lambde a:a*5,lambde b:b/5]
eval函数
可以执行括号内的任意类型的函数
递归函数
自己调用自己
def hanshu(m):
if m==0:
print('over')
return 1 #此处是给递归函数的最后一个值垫底用的,必须得返回一个数值
else:
return m*hanshu(m-1)
print(hanshu(5))~