目录
一.for的迭代循环
for i in (10,20,30):
print(i*10)
1.可迭代对象
(1)序列
包含:字符串、列表、元组
(2). 字典
(3). 迭代器对象(iterator)
(4). 生成器函数(generator)
(5). 文件对象
#!usr/bin/env python
# -*- coding:utf-8 _*-
"""
@author: 39572
@file: mypy_01.py
@time: 2020/09/29
@desc:
"""
for i in (10,20,30):#遍历元组
print(i*10)
for x in "lin hai xin beautiful !":#遍历字符串
print(x)
for a in ["林海馨","真好看!","说的对!"]:#遍历列表
print(a)
d={"姓名":"林海馨","性别":"女","美貌程度":"10级"}
for b in d:#遍历字典的所有键
print(b)
for c in d.values():#遍历字典的所有值
print(c)
for e in d.items():#遍历字典的整个键值对
print(e)
- range 对象是一个迭代器对象,用来产生指定范围的数字序列。格式为: range(start, end [,step]),end参数必须设置,start参数不设置时默认从0开始,步长默认为1。
#!usr/bin/env python
# -*- coding:utf-8 _*-
"""
@author: 39572
@file: mypy_02.py
@time: 2020/09/29
@desc:
"""
sum=0
even_sum=0
odd_sum=0
for i in range(1,101):
sum+=i
if(i%2==0):
even_sum+=i
else:odd_sum+=i
print("1-100的整数和为:{0}".format(sum))
print("1-100的偶数和为:{0}".format(even_sum))
print("1-100的奇数和为:{0}".format(odd_sum))
2.嵌套循环的综合练习
一个循环体内可以嵌入另一个循环,一般称为“嵌套循环”,或者“多重循环”
for x in range(5):#0 1 2 3 4
for y in range(5):#0 1 2 3 4
# print(y)
print(x,end="\t")#/t为制表符,在不使用表格的情况下,上下对齐
print()#换行
'''
出现表格时使用两个参数进行表格的表示
'''
利用循环嵌套打印9*9乘法表
for x in range(1,10):
for y in range(1,x+1):
print("{0}*{1}={2}".format(x,y,(x*y)),end="\t")
print()
二.语句、循环优化和并行迭代
1.break
break 语句可用于 while 和 for 循环,用来结束整个循环。当有嵌套循环时,break 语句只 能跳出最近一层的循环。
while True:
a=input("请输入一个字符(输入Q/q则退出系统):")
if a.upper()=='Q':
#此处为upper()函数,注意要加上括号
print("循环结束,已退出!")
break
else:
print(a)
2.continue
continue 语句用于结束本次循环,继续下一次。多个循环嵌套时,continue 也是应用于最 近的一层循环。
eg:要求输入员工的薪资,若薪资小于 0 则重新输入。最后打印出录入员工的数量和薪资明细,以及平均薪资
整体思路:要求输出四个值,则先定义四个空值。continue表示此次循环终止,但是整个循环没有终止,break表示整个循环终止,不再进行循环。要注意循环的缩进问题。
#!usr/bin/env python
# -*- coding:utf-8 _*-
"""
@author: 39572
@file: mypy_07.py
@time: 2020/09/29
@desc:
"""
staff_num=0
salerys=[]
ave_salery=0
sum_salery=0
while True:
a = input("请输入您的薪资(输入Q/q则代表录入完成):") # 此处input函数已经遗忘,需要复习
if a.upper()=="Q":
print("录入完成。")
break
if float(a)<0:
print("您输入的工资有误,请重新输入")
continue
staff_num+=1
salerys.append(float(a))
sum_salery+=float(a)
ave_salery=sum_salery/staff_num
print("员工人数:{0}".format(staff_num))
print("员工工资总数:{0}".format(sum_salery))
print("员工工资:{0}".format(salerys))
print("员工平均工资:{0}".format(ave_salery))
3.else
while、for 循环可以附带一个 else 语句(可选)。如果 for、while 语句没有被 break 语句 结束,则会执行 else 子句,否则不执行。
语法格式如下:
while 条件表达式:
循环体 else: 语句块
eg:员工一共 4 人。录入这 4 位员工的薪资。全部录入后,打印提示“您已经全部录 入 4 名员工的薪资”。最后,打印输出录入的薪资和平均薪资。
#!usr/bin/env python
# -*- coding:utf-8 _*-
"""
@author: 39572
@file: mypy_08.py
@time: 2020/09/29
@desc:
"""
salerys=[]#列表的定义忘记
ave_salerys=0
sum_salerys=0
sum_staffs=0
while True:
a=input("请输入员工的工资:")
if float(a)<0:
print("输入有误,请重新输入:")
continue
sum_staffs+=1
salerys.append(float(a))
sum_salerys+=float(a)
ave_salerys=sum_salerys/sum_staffs
if int(sum_staffs) > 3:
print("录入完毕!")
break
print("员工工资详情:{0}".format(salerys))
print("员工总工资:{0}".format(sum_salerys))
print("员工平均工资:{0}".format(ave_salerys))
4.循环代码优化
-
优化的规则:1.减少循环内部的计算环节
2.尽量减少内部循环的计算,尽可能往外提
3.局部变量查询较快,尽量使用局部变量
import time
start_time=0
end_time=0
start_time=time.time()
for i in range(1,1000):
A=[]
for j in range(1,10000):
A.append(i*1000+j*1000)
print("计算结果为:{0}".format(i*1000+j*100))
end_time=time.time()
print("总计消耗时间:{0}".format(end_time-start_time))
start_time=time.time()
for a in range(1,1000):
B=[]
c=a*1000
for b in range(1,10000):
B.append(c+b*1000)
print("计算结果为:{0}".format(a*1000+b*100))
end_time=time.time()
print("总计消耗时间:{0}".format(end_time-start_time))
- 其他优化手段
1. 连接多个字符串&#