Python基础知识(第五天)
62 .for循环结构_遍历各种可迭代对象_range对象
for 循环和可迭代对象遍历
for 循环通常用于可迭代对象的遍历。for 循环的语法格式如下:
for 变量in可迭代对象:循环体语句
for x in (20,30,40):print(x*3)可迭代对象
1.序列。包含:字符串、列表、元组
2.字典
3.迭代器对象(iterator)
4.生成器函数(generator)
5.文件对象
d={"name":"高奇","age":18,"job":"程序员"} for x in d:print(x) for x in d.keys():print(x) for x in d.values():print(x) for x in d.items():print(x)range 对象
range 对象是一个迭代器对象,用来产生指定范围的数字序列。格式为:range(start, end [,step])生成的数值序列从 start 开始到 end 结束(不包含 end)。若没有填写 start,则默认从 0 开始。step 是可选的步长,默认为1。
sum_all=0 sum_odd=0 sum_even=0 for x in range(101):sum_all +=xif x%2==1:sum_odd+=xelse:sum_even+=x print(sum_all) print(sum_odd) print(sum_even)63.嵌套循环
嵌套循环
一个循环体内可以嵌入另一个循环,一般称为“嵌套循环”,或者“多重循环”。
for x in range(5):for y in range(5):print(x,end="\t")print()64.嵌套循环练习_九九乘法表_打印表格数据
九九乘法表
for m in range(1,10):for n in range(1,m+1):print("{0}*{1}={2}".format(m,n,(m*n)),end="\t")print()用列表和字典存储下表信息,并打印出表中工资高于 15000 的数据
| 姓名 | 年龄 | 薪资 | 城市 |
| 高小一 | 18 | 30000 | 北京 |
| 高小二 | 19 | 20000 | 上海 |
| 高小五 | 20 | 10000 | 深圳 |
65.break语句
break语句
break 语句可用于while和 for 循环,用来结束整个循环。当有嵌套循环时,break语句只能跳出最近一层的循环。
while True:a = input("请输入一个字符(输入 Q 或 q 结束)")if a.upper()=='Q':print("循环结束,退出")breakelse:print(a)66.continue语句
continue语句
continue 语句用于结束本次循环,继续下一次。多个循环嵌套时,continue 也是应用于最近的一层循环。
要求输入员工的薪资,若薪资小于 0 则重新输入。最后打印出录入员工的数量和薪资明细,以及平均薪资
empNum = 0 salarySum= 0 salarys = [] while True:s = input("请输入员工的薪资(按 Q 或 q 结束)")if s.upper()=='Q':print("录入完成,退出")breakif float(s)<0:continueempNum +=1salarys.append(float(s))salarySum += float(s) print("员工数{0}".format(empNum)) print("录入薪资:",salarys) print("平均薪资{0}".format(salarySum/empNum))67.else语句
while、for 循环可以附带一个 else 语句(可选)。如果 for、while 语句没有被 break 语句结束,则会执行 else 子句,否则不执行。语法格式如下:
员工一共 4 人。录入这 4 位员工的薪资。全部录入后,打印提示“您已经全部录入 4 名员工的薪资”。最后,打印输出录入的薪资和平均薪资
salarySum= 0 salarys = [] for i in range(4):s = input("请输入一共 4 名员工的薪资(按 Q 或 q 中途结束)")if s.upper()=='Q':print("录入完成,退出")breakif float(s)<0:continuesalarys.append(float(s))salarySum += float(s) else:print("您已经全部录入 4 名员工的薪资")print("录入薪资:",salarys) print("平均薪资{0}".format(salarySum/4))68.循环代码优化技巧(及其重要)
虽然计算机越来越快,空间也越来越大,我们仍然要在性能问题上“斤斤计较”。编写循环时,遵守下面三个原则可以大大提高运行效率,避免不必要的低效计算:
1.尽量减少循环内部不必要的计算
2.嵌套循环中,尽量减少内层循环的计算,尽可能向外提。
3.局部变量查询较快,尽量使用局部变量
import timestart = time.time() for i in range(1000):result = []for m in range(10000):result.append(i*1000+m*100) end = time.time() print("耗时:{0}".format((end-start)))start2 = time.time() for i in range(1000):result = []c = i*1000for m in range(10000):result.append(c+m*100) end2 = time.time() print("耗时:{0}".format((end2-start2)))耗时:1.7897577285766602
耗时:1.3709008693695068
其他优化手段
1.连接多个字符串,使用 join()而不使用+
2.列表进行元素插入和删除,尽量在列表尾部操作
69.zip()并行迭代
使用 zip()并行迭代
我们可以通过 zip()函数对多个序列进行并行迭代,zip()函数在最短序列“用完”时就会停止。
names = ("高淇","高老二","高老三","高老四") ages = (18,16,20,25) jobs = ("老师","程序员","公务员") for name,age,job in zip(names,ages,jobs):print("{0}--{1}--{2}".format(name,age,job)) for i in range(3):print("{0}--{1}--{2}".format(names[i],ages[i],jobs[i]))执行结果:
高淇--18--老师
高老二--16--程序员
高老三--20--公务员
70.推导式创建序列_列表推导式_字典推导式_集合推导
式_生成器推导式
推导式创建序列
推导式是从一个或者多个迭代器快速创建序列的一种方法。它可以将循环和条件判断结合,从而避免冗长的代码。推导式是典型的 Python 风格,会使用它代表你已经超过Python初学者的水平。
列表推导式
[表达式 for item in 可迭代对象 ]
或者:{表达式 for item in 可迭代对象 if 条件判断}
>>> [x for x in range(1,5)] [1, 2, 3, 4]
>>> [x*2 for x in range(1,5)] [2, 4, 6, 8]
>>> [x*2 for x in range(1,20) if x%5==0 ] [10, 20, 30]
>>> [a for a in "abcdefg"] ['a', 'b', 'c', 'd', 'e', 'f', 'g']
字典推导式
字典的推导式生成字典对象,格式如下:
{key_expression : value_expression for 表达式 in 可迭代对象}
类似于列表推导式,字典推导也可以增加 if 条件判断、多个 for 循环。
my_text = 'i love you,i love sxt,i love gaoqi' char_count = {c:my_text.count(c) for c in my_text} print(char_count)集合推导式
集合推导式生成集合,和列表推导式的语法格式类似:
{表达式 for item in 可迭代对象 }或者:{表达式 for item in 可迭代对象 if 条件判断}
>>> {x for x in range(1,100) if x%9==0}
{99, 36, 72, 9, 45, 81, 18, 54, 90, 27, 63}
生成器推导式(生成元组)
(x for x in range(1,100) if x%9==0)
我们发现提示的是“一个生成器对象”。显然,元组是没有推导式的。一个生成器只能运行一次。第一次迭代可以得到数据,第二次迭代发现数据已经没有了。
>>> gnt = (x for x in range(1,100) if x%9==0)
>>> for x in gnt:
print(x,end=' ')
9 18 27 36 45 54 63 72 81 90 99
>>> for x in gnt:
print(x,end=' ')
>>>
71.综合练习_绘制不同颜色的多个同心圆_绘制棋盘
绘制多个同心圆
import turtle t = turtle.Pen() my_colors = ("red","green","yellow","black") t.width(4) t.speed(1) 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()72.函数的基本概念_内存分析_函数的分类_定义和调用
函数是可重用的程序代码块。函数的作用,不仅可以实现代码的复用,更能实现代码的一致性。一致性指的是,只要修改函数的代码,则所有调用该函数的地方都能得到体现。
在编写函数时,函数体中的代码写法和我们前面讲述的基本一致,只是对代码实现了封装,并增加了函数调用、传递参数、返回计算结果等内容。为了让大家更容易理解,掌握的更深刻。我们也要深入内存底层进行分析。绝大多数语言内存底层都是高度相似的,这样大家掌握了这些内容也便于以后学习其他语言。
函数的基本概念
1.一个程序由一个个任务组成;函数就是代表一个任务或者一个功能。
2.函数是代码复用的通用机制。
Python 函数的分类
1.内置函数
我们前面使用的 str()、list()、len()等这些都是内置函数,我们可以拿来直接使用。
2.标准库函数
我们可以通过 import 语句导入库,然后使用其中定义的函数。
3.第三方库函数
Python 社区也提供了很多高质量的库。下载安装这些库后,也是通过 import 语句导入,然后可以使用这些第三方库的函数。
4.用户自定义函数
用户自己定义的函数,显然也是开发中适应用户自身需求定义的函数。今天我们学习的 就是如何自定义函数。
函数的定义和调用
Python 中,定义函数的语法如下:
def 函数名 ([参数列表]) :
'''文档字符串'''
‘函数体/若干语句
要点:
73.形参和实参_文档字符串_函数注释
形参和实参
def printMax(a,b):if a>b:print(a,'较大值') else:print(b,'较大值') printMax(10,20) printMax(30,5)上面的 printMax 函数中,在定义时写的 printMax(a,b)。a 和 b 称为“形式参数”, 简称“形参”。也就是说,形式参数是在定义函数时使用的。 形式参数的命名只要符合“标识符”命名规则即可。
在调用函数时, 传递的参数称为“ 实际参数”, 简称“ 实参”。上面代码中, printMax(10,20),10 和 20 就是实际参数。
文档字符串(函数的注释)
程序的可读性最重要,一般建议在函数体开始的部分附上函数定义说明,这就是“文档字符 串”,也有人成为“函数的注释”。我们通过三个单引号或者三个双引号来实现,中间可以加入多行文字进行说明。
我们调用 help(函数名. doc )可以打印输出函数的文档字符串。
74.返回值详解
返回值
return 返回值要点:
1.如果函数体中包含return语句,则结束函数并执行返回值。
2.如果函数体中不包含return语句,则返回None值。
3.要返回多个返回值,使用列表、元组、字典、集合将多个值“存起来”即可。
总结
以上是生活随笔为你收集整理的Python基础知识(第五天)的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: Python基础知识(第四天)
- 下一篇: Python基础知识(第六天)