【AI编程学习之Python】第十六天:Python的循环语句结构
发布者:admin发表于:22天前阅读数:90评论:0
关键词:aipython

python_AI

循环结构用来重复执行一条或多条语句。表达这样的逻辑:如果符合条件,则反复执行循环体里的语句。在每次执行完后都会判断一次条件是否为True,如果为True则重复执行循环体里的语句。图示如下:

循环体里面的语句至少应该包含改变条件表达式的语句,以使循环趋于结束;否则,就会变成一个死循环。

while循环

while 表达式为://False则跳出循环 True执行循环 循环体语句

【操作】利用while循环打印0-10的数字

num=0while num<11 print(num) num+=1

for循环用于可迭代对象遍历

for循环通常用于可迭代对象的遍历。for循环的语法格式如下:

for 变量 in 迭代对象: 循环体语句

【操作】遍历一个元组或列表

for x in (20,30,40): print(x*3)

可迭代对象

Python包含以下几种可迭代对象:

1.序列。包含:字符串、列表、元组

2.字典

3.迭代器对象(iterator)

4.生成器函数(generator)

5.文件对象

我们已经在前面学习了序列、字典等知识,迭代器对象和生成器函数将在后面进行详解。接下来,我们通过循环来遍历这几种类型的数据:

【操作】遍历字符串中的字符

for x in list("wmd.cn"): print(x)

【操作】遍历字典

d={'name':'完美岛','age':19}for x in d: #遍历所有的key print(x)for x in d.values(): #遍历所有的value print(x)for x in d.keys(): #遍历所有的key print(x)for x in d.items(): #遍历所有的键值对 print(x)

range对象

range对象是一个迭代器对象,用来产生指定范围的数字序列。格式为:range(start,end [,step])

生成的数值序列从start开始到end结束(不包含end)。若没有填写start,则默认从0开始。step是可选的步长,默认为1。如下是几种典型示例:

for i in range(10) 产生序列:0123456789for i in range(3,10) 产生序列:3456789for i in range(3,10,2) 产生序列:3579

【操作】利用for循环,计算1-100之间数字的累加和,计算1-100之间数的累加和。

sum=0for i in range(1,100): sum+=iprint(i)

嵌套循环

一个循环体内可以嵌入另一个循环,一般称为”嵌套循环”,或者“多重循环”。

【操作】打印如下图案

0 0 0 0 01 1 1 1 12 2 2 2 23 3 3 3 34 4 4 4 4
for i in range(5): for j in range(5): print(i,end="\t") print()

【操作】利用嵌套循环打印九九乘法表

for i in range(1,10): s="" for j in range(1,10): s+=str.format("{0}*{1}={2}\t",i,j,i*j) print(s)

break

break语句可用于while和for循环,用来结束整个循环。当有嵌套循环时,break语句只能跳出最近一层的循环。

【操作】使用break语句跳出循环

while True: a=input("请输入Q或q结束程序") if a.upper()=='Q': print("结束循环,跳出") break else: print(a)

continue

continue语句用于结束本次循环,继续下一次。多个循环嵌套时,continue也是应用于最近的一层循环。

【操作】要求输入员工的薪资,若薪资小于0则重新输入。最后打印出录入员工的数量和薪资明细,以及平均薪资

else语句

while、for循环可以附带一个else语句(可选)。如果for、while语句没有被break语句结束,则会执行else后表达式作为结尾,否则不执行。语法格式如下:

while 条件表达式: 循环体else: 语句块或者:for 变量 in 可迭代对象: 循环体else: 语句块
num=1while num<10: print(num) num+=1 if num>5: breakelse: print("end")

完美岛AI推荐

循环代码优化

虽然计算机越来越快,空间也越来越大,我们仍然要在性能问题上“斤斤计较”。编写循环时,遵守下面三个原则可以大大提高运行效率,避免不必要的低效计算:

  1. 尽量减少循环内部不必要的计算

  2. 嵌套循环中,尽量减少内层循环的计算,尽可能向外提

  3. 局部变量查询较快,尽量使用局部变量

  4. 循环内用到多个字符串拼接,使用join 而不是+ ,+会产生新的字符串对象

  5. 列表操作元素插入删除,尽量在列表尾部操作

import time#在循环内部计算start=time.time()for i in range(100): result=[] for m in range(10000): result.append(i*1000+m*1000)end=time.time()print("循环1耗时:{}".format((end-start)))start2=time.time()for i in range(100): result=[] c=i*1000 for m in range(10000): result.append(c+m*1000)end2=time.time()print("循环2耗时:{}".format((end2-start2)))

完美岛AI推荐

其他优化手段:

  1. 连接多个字符串,使用join()而不使用+

  2. 列表进行元素插入和删除,尽量在列表尾部操作

zip并行迭代

我们可以通过zip()函数对多个序列进行并行迭代,zip()函数在最短序列“用完”时就会停止。

【操作】测试zip())并行迭代

a=('完美1岛','完美2岛','完美3岛')b=(2,3)for name,age in zip(a,b): #取最少的那组 print("{0}:{1}".format(name,age))

结果:

完美1岛:2
完美2岛:3