for 循环
通常用于可迭代对象的遍历
语法结构
for 变量 in 可迭代对象(字符串、列表、元组、字典、迭代器对象、生成器对象、文件对象)
循环体语句
#遍历一个元组或列表
for x in (10,20,30):
print(x)
#遍历字符串中的字符
for x in list('nihao001'):
print(x)
#遍历字典
d={'name':'vivi','age':18,'class':12}
for x in d:
print(x) #遍历所有key
for x in d.keys():
print(x) #遍历字典所有的key
for x in d.values():
print(x) #遍历字典所有的value
for x in d.items():
print(x) #遍历字典所有的键值对,返回的是元组
range对象
range对象是一个可迭代对象,产生指定的数字序列
语法格式:
range(start, end [,step])
包头不包尾,start默认为0,step默认为1
sum_all=0
sum_even=0 #偶数的和
sum_add=0 #奇数的和
for x in range(101):
sum_all+=x
if x%2==0:
sum_even+=x
else:
sum_odd=+x
x=x+1
print('1-100所有的数字之和',sum_all)
print('1-100所有的偶数之和',sum_even)
print('1-100所有的奇数之和',sum_odd)
嵌套循环
for x in range(1,6):
for y in range(1,6):
print(y,end='\t')
print() #起到换行的作用
# 打印九九乘法表
for x in range(1,10)
for y in range(1,x+1)
print('{0}*{1}={2}'.format(x,y,(x*y)))
print()
break语句
用于while和佛如循环,用来结束整个循环,当有嵌套循环时break语句只能跳出最近一层的循环
while True:
a= input('请输入一个字符(数入Q或q结束):')
if a.upper()=='Q' #将字符串中的小写字母转换成大写字母
print('循环结束,退出')
break
else:print(a)
continue语句
用于结束本次循环,继续下一次,多个循环嵌套时,用于最近的一次循环
Num=0
salarySum=0
salaties=[]
while True:
s=input('请输入员工工资(按Q或q结束):')
if s.upper()=='Q':
print('录入完成,退出:')
break
if float(s)<0
continue
Num+=1
salarySum+=float(s)
salaties.append(float(s))
print('员工数{0}'.format(Num))
print('录入薪资:'salaries)
print('平均薪资'.format(salarySum/Num))
else语句
语法格式:
while 条件表达式:
循环体
else:
语句块
for in 可迭代对象:
循环体
else:
语句块
salarySum=0
salaries=[]
for x in range(5):
s=input('请输入您的工资数(数入Q或q退出):')
if s.upper()=='Q':
print('您已完成输入')
break
if float(s)<0:
continue
salarries.append(float(s))
salarySum+=float(s)
else:
print('您已全部输入完成')
print('输入薪资:',salaries)
print('平均薪资{0}'.format(salarySum/5))
循环代码的优化
①尽量减少循环内不必要的计算
②嵌套循环中,尽量减少内层循环的计算,尽可能向外提
③局部便变量查询较快,所以尽量使用查询变量
zip()并行迭代
对多个序列同时进行并行迭代,zip()函数在最短序列用完时就会停止
name={'vivi','kiki','lily','baly'}
age={18,16,17,19}
job={'teacher','writer','actor'}
#使用zip()进行并行迭代
for a,b,c in zip(name,age,job):
print('{0}-{1}-{2}'.format(name,age,job))
#用一般的for循环
for i in range(3)
print('{0}-{1}-{2}'.format(name[i],age[i],job[i]))
总结:推导式创建序列
列表推导式
语法结构:
[表达式 for item in 可迭代对象 if 条件判断]
#列表推导式
y=[x*2 for x in range(1,10), if x%5==0]
print(y)
#使用append()
y=[]
for x in range(1,10)
if x%5==0:
y.append(x*2)
print(y)
#二者结果一样
字典推导式
语法结构:
{key_expression:value_expression for 表达式 in 可迭代对象}
text='i love twitter'
dic={a:text.count(c) for c in text}
print(dic)
#将文本中每一个字母出现多少次表达出来
集合推导式
语法结构:
{表达式 for item in 可迭代对象 if 条件判断}
生成器推导式(生成元组)
(表达式 for item in 可迭代对象 if 条件判断)
注意:
返回的不是元组对象,而是一个生成器推导式
<genertor object at 0x00000000002BD3048>
a=(x for x in range(5))
print(tuple(a))#有结果
print(tuple(a))#第二次无结果
#也可以用for来遍历可迭代对象,和上面一样的效果
for y in a
print(y)
函数用法和底层分析
函数简介
函数的基本概念(function)
可重用的程序代码块,要注重函数代码的一致性,完成一种功能并反复调用
函数的分类
①内置函数
str(), list(), sum()等等
②标准库函数
import turtle
import math
math.floor()
③第三方库函数
④用户自定义函数
函数的定义和调用
定义
语法格式:
def 函数名([参数列表]):
‘’'文档字符串‘’‘
函数体 /若干语句
要点:
1,使用del来定义函数,后接空格和函数名:
python执行del时会创建一个函数对象,并绑定到函数变量名上
2,参数列表
圆括号内时形式参数,有多个参数时用逗号隔开
无参数也要保留圆括号
形式参数不需要声明类型,也不需要指定函数的返回值类型
实参列表要与形参列表一一对应,多一个或者少一个都会返回error
形参和实参
def printMax(a,b) #形式参数,要符合标识符命名规则
'''实现两个数的比较,并返回最大值'''
if a>b:
print(a,'较大值')
if a<b:
print(b,'较大值') #函数在这里就结束了
print(10,30) #使用函数,这里的10,30为实际参数
返回值
return返回值要点:
如果函数中包含return语句,则结束函数执行并返回值
如果函数中没有return语句,则返回None值
要返回多个值,使用列表、元组、字典、集合将多个值‘存起来’即可