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))

循环代码优化

  1. 尽量减少循环内部不必要的计算。可以放到循环外面的尽量放到外面。
  2. 嵌套循环中,尽量减少内层循环的计算,尽可能向外提。减少计算次数。
  3. 局部变量查询较快,尽量使用局部变量

其他优化手段

  1. 连接多个字符串,使用join()而不使用+
  2. 列表进行元素插入和删除,尽量在列表尾部操作

使用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)可以打印输出函数的注释。