赞
踩
for循环通常用于可迭代对象的遍历。语法格式如下:
其中可迭代对象包含一下几种:
<1>、序列:字符串、列表、元组
<2>、字典
<3>、迭代器对象(iterator)
<4>、生成器函数(generator)
<5>、文件对象
举例:遍历字符串中的字符
举例:遍历字典
**range对象是一个迭代器对象,用来产生指定范围的数字序列。格式为
range(start, end [,step])
生成的数值序列从start开始到end结束(不包含end )。若没有填写start,则默认从0开始。step是可选的步长,默认为1。**如下是几种典型示例:
举例:利用for循环,计算1-100之间数字的累加和;计算1-100之间的偶数累加和,计算1-100之间奇数累加和。
例1:打印如下图案
例2:使用嵌套循环打印九九乘法口诀表
# 打印乘法口诀表
for i in range(1, 10):
for j in range(1, i+1):
print("{0} * {1} = {2}".format(i, j, i*j), end=" ")
print()
break语句可用于while和for循环,用于结束整个循环。当有嵌套循环时,break语句只能跳出最近一层的循环。
continue语句用于结束本次循环,继续进行下一次循环。多个循环嵌套时,continue也是应用于最近的一层循环。
举例:要求输入员工的薪资,若薪资小于 0 则重新输入。最后打印出录入员工的数量和薪资明细,以及平均薪资。
# 要求输入员工的薪资,若薪资小于 0 则重新输入。最后打印出录入员工的数量和薪资明细,以及平均薪资. wo_sum = 0 #员工人数 sa_sum = 0 #薪资总和 salary = [] #存放员工的薪资列表 while True: a = input("请输入员工的工资(输入Q时结束):") if a == "Q": print("录入完成,退出") break if int(a) < 0: print("工资无效,请重新输入……") continue else: salary.append(int(a)) sa_sum += int(a) wo_sum += 1 print("员工的人数:{0}".format(wo_sum)) print("薪资明细:{0}".format(salary)) print("平均薪资:{0}".format(sa_sum/wo_sum))
while、for循环可以附带一个else语句。如果for、while语句没有被break语句结束,则会执行else子句,否则不执行。
语法格式如下:
例题:员工一共 4 人。录入这 4 位员工的薪资。全部录入后,打印提示“您已经全部录
入 4 名员工的薪资”。最后,打印输出录入的薪资和平均薪资。
sum = 0 work = 0 salary = [] # 存放员工薪资的数组 for i in range(4): a = input("请输入员工的薪资(输入Q和q时中途结束):") if a.upper() == "Q": print("录入完成,退出") break if float(a) < 0: print("输入薪资不规范,请重新输入") continue salary.append(float(a)) sum += float(a) work += 1 else: print("您已经全部录入4名员工的薪资") print(salary) print("平均薪资为{0}".format(sum/work))
编写循环时,遵守下面三个原则可以大大提高运行效率,避免不必要的低效计算:
(1) 尽量减少循环内部不必要的计算。
(2) 嵌套循环中,尽量减少内层循环的计算,尽可能向外提。
(3) 局部变量查询较快,尽量使用局部变量。
举例:
其他优化手段
(1)连接多个字符串,使用join()而不使用+
(2)列表进行元素插入和删除,尽量在列表尾部操作
我们可以使用zip函数对多个序列进行并行迭代,zip()函数在最短序列“用完”时就会停止。
# 测试zip()并行迭代
names = ("kdx", "sss", "zhangsan", "lisi")
ages = (12, 14, 16, 18)
jobs = ("老师", "程序员", "公务员")
for name, age, job in zip(names, ages, jobs):
print("{0}--{1}--{2}".format(name, age, job))
推导式是从一个或者多个迭代器快速创建序列的一种方法。它可以将循环和条件判断结合,从而避免冗长的代码。
(1)列表推导式
举例:
# 列表推导式
su1 = [i for i in range(1, 5)]
print(su1)
su2 = [i*3 for i in range(1, 5)]
print(su2)
su3 = [i*4 for i in range(1, 5) if i % 4 == 0]
print(su3)
su4 = [i for i in "abcdefg"]
print(su4)
su5 = [(i, j) for i in range(1, 4) for j in range(1, 4)]
for i in su5:
print(i, end=" ")
举例:
# 字典推导式
# 计算一段字符串每个字母的个数
my_text = 'i love you, i love changan, i love ssss'
dic1 = {i: my_text.count(i) for i in my_text}
print(dic1)
举例:
# 集合推导式
jh = {i for i in range(1, 100) if i % 9 == 0}
print(jh)
举例:
# 生成器推导式(生成元组)
ss = (i for i in range(1, 100) if i % 9 == 0)
for i in ss:
print(i, end=" ")
for i in ss:
print(i, end=" ")
如下图所示,第一次迭代可以得到数据,第二次迭代就没有数据了。
(1)函数分类
(2)函数的定义和调用
<1>核心要点
<2> 形参和实参
(3)文档字符串(函数注释)
程序的可读性最重要,一般建议在函数体开始的部分附上函数定义说明,这就是“文档字符串”,也有人成为“函数的注释”。我们通过三个单引号或者三个双引号来实现,中间可以加入多行文字进行说明。(三个单引号也可以用来定义多行字符串)
(4)返回值
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。