for循环和可迭代对象遍历
for循环语法格式:
for 变量 in 可迭代对象(序列,元组,列表…)
循环体语句
range对象
range(start,end,[step])
注:从start到end,不包括end
num_all = 0
for i in range(101):
num_all += i
print(num_all)
嵌套循环
for x in range(5):
for y in range(5):
print(x,end="\t")
print() #天然具有换行的效果
九九乘法表
```python
for m in range (1,10):
for n in range(1,10):
if n<=m:
#注意format前面需要一个点,如果不添加end="\t"则天然换行
print("{0}*{1}={2}".format(m,n,(m*n)),end = "\t")
else:
pass
print()
break语句
用来结束整个循环
continue 语句
结束本次循环,进行下一次循环
else语句
salarySum = 0
salarys = []
for i in range(4):
s = input("请输入一共4名员工的薪资(按q或Q退出 ")
if s.upper() == "Q":
print("录入完成,退出")
break
if float(s)<0:
continue
salarys.append(float(s))
salarySum += float(s)
else:
print("已经全部录制完毕")
print("录入薪资",salarys)
print("平均薪资{0}".format(salarySum/4))
循环代码优化
- 尽量减少内部必要的计算
- 嵌套循环中,尽量减少内层循环的计算,尽可能向外提
- 局部变量查询比较快,尽量使用局部变量
其他优化手段
- 连接多个字符串,使用join而不是使用+
- 进行元素插入和删除,尽量在类表尾部操作
zip()并行迭代
name = ("高企","流弊","老八")
ages = (2,5,7)
jobs = ("老师","程序员","校长")
for i in range(3):
print("{0}--{1}--{2}".format(name[i],ages[i],jobs[i]))
for name,ages,jobs in zip(name,ages,jobs):
print("{0}--{1}--{2}".format(name,ages,jobs))
推导式创建序列
列表推导式
语法:
[表达式 for item in 可迭代对象 ]
y = [x*2 for x in range(1,5)]
print(y)
字典推导式
语法:
[key:value for 表达式 in 可迭代对象]
my_text = "sdf adfadfaef addf wee"
char_count = {c:my_text.count(c) for c in my_text}
print(char_count)
生成器推导式
例题:
import turtle
t = turtle.Pen()
my_colors = ("red","yellow","green","black")
t.width(4)
t.speed(0)
for i in range(10):
t.penup()
t.goto(0,-i*10)
t.pendown()
t.color(my_colors[i%len(my_colors)])
t.circle(15+i*10)
turtle.done()
函数用法和底层分析
函数的定义和调用
定义:def 函数名(参数列表)
调用: 函数名() ,记得加上括号
返回值的基本用法
return:1. 返回值 2. 结束函数执行
注:
- 函数中有return,则结束函数执行并返回值
- 没有return,则返回None
- 返回多个值可以用列表,元组,字典,集合存起来
def test03(x,y,z):
return[x*10,y*10,z*10]
print(test03(1,2,4))