Python基础知识_第5节_控制语句 & 函数用法和底层分析
- 控制语句
- 循环结构 loop
- for loop
- 用for loop计算方程。
- 表格选择打印
- break & continue 语句
- else 语句
- `循环代码优化`
- 其他优化手段
- 使用zip()并行迭代
- 推导式创建序列
- 列表推导式
- 字典推导式
- 集合推导式
- 生成器推导式(生成元组)
- 综合练习
- 用海龟绘制同心圆
- 函数用法和底层分析
- 函数简介
- 函数的基本概念
- 函数的分类
- 函数的定义和调用
- 文档字符串(函数的注释)
控制语句
循环结构 loop
for loop
- `遍历字典时,如果不表明,默认遍历字典所有的key。
- range对象是一个迭代器对象。
用for loop计算方程。
编写程序,计算百钱买百鸡问题。假设公鸡5元一只,母鸡3元一只,小鸡1元三只,现在有100块钱,想买100只鸡,问有多少种买法?
count=0
for x in range(0,101):
for y in range(0,101):
if(x*5+y*3+(100-x-y)/3==100):
print('公鸡{0}只,母鸡{1}只,小鸡{2}只'.format(x,y,100-x-y))
count+=1
print('共{0}种买法'.format(count))
表格选择打印
r1= dict(name="高小一",age=18,salary=30000,city="北京")
r2= dict(name="高小二",age=19,salary=20000,city="上海")
r3= dict(name="高小三",age=20,salary=10000,city="深圳")
tb = [r1,r2,r3]
for x in tb:
if x.get("salary")>15000:
print(x)
break & continue 语句
- break:用来结束整个循环。当有嵌套循环时,break语句只能跳出最近一层的循环。
- continue:结束本次循环,
继续下一次
。多个循环嵌套时,continue也是应用于最近的一层循环。
else 语句
- While、for 循环都可以附带一个else语句。
如果for、while 语句没有被break 语句结束,则会执行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("您已经全部录入4 名员工的薪资") #只有再录入全部4位才会打印该行
print("录入薪资:",salarys)
print("平均薪资{0}".format(salarySum/4))
循环代码优化
- 尽量减少循环内部不必要的计算。可以放到循环外面的尽量放到外面。
- 嵌套循环中,尽量减少内层循环的计算,尽可能向外提。减少计算次数。
- 局部变量查询较快,尽量使用局部变量。
其他优化手段
- 连接多个字符串,使用join()而不使用+
- 列表进行元素插入和删除,尽量在列表尾部操作
使用zip()并行迭代
>>>names = ("高淇","高老二","高老三","高老四")
>>>ages = (18,16,20,25)
>>>jobs = ("老师","程序员","公务员") # names和ages都有4个元素,jobs只有3个。
>>>for name,age,job in zip(names,ages,jobs):
print("{0}--{1}--{2}".format(name,age,job))
高淇--18--老师
高老二--16--程序员
高老三--20--公务员
推导式创建序列
列表推导式
- [表达式 for item in 可迭代对象 ]
- [表达式 for item_1 in 可迭代对象_1 for item_2 in 可迭代对象_2]
- [表达式 for item in 可迭代对象 if 条件判断]
字典推导式
- {key_expression : value_expression for 表达式 in 可迭代对象 if 条件判断}
>>> my_text = ' i love you, i love sxt, i love gaoqi'
>>> char_count = {c:my_text.count(c) for c in my_text}
>>> char_count
{' ': 9, 'i': 4, 'l': 3, 'o': 5, 'v': 3,
'e': 3, 'y': 1, 'u': 1, ',': 2, 's': 1, 'x': 1, 't': 1, 'g': 1, 'a': 1, 'q': 1}
集合推导式
- {expression for 表达式 in 可迭代对象 if 条件判断}
生成器推导式(生成元组)
- (expression for 表达式 in 可迭代对象 if 条件判断),生成的不是元组,是生成器推导式。只可使用一次。
综合练习
用海龟绘制同心圆
import turtle
t = turtle.Pen()
my_colors = ("red","green","yellow","black")
t.width(4) #规定画笔的宽度。
t.speed(10) # 规定画图的时间,数字越打越慢。
for i in range(10): # 0 1 2 3 4
t.penup()
t.goto(0,-i*10) # 0, - 100, -200, -300, -400
t.pendown()
t.color(my_colors[i%len(my_colors)])
t.circle(15+i*10)# 100, 200, 300, 400, 500
t.hideturtle() # 隐藏画笔
turtle.done() # 程序执行完,窗口仍然在。
函数用法和底层分析
函数简介
函数的基本概念
- 函数就是代表一个任务或者一个功能。
函数的分类
- 内置函数:直接拿来使用,不用import。
- 标准库函数:用import导入库。
- 第三方库函数:下载后,用import导入库。
- 用户自定义函数:自己写出来的函数。
函数的定义和调用
文档字符串(函数的注释)
- help(函数名.doc)可以打印输出函数的注释。