前言
本篇博客将会讲述一下Python语言中的流程控制语句,在高中我们数学中学过程序流程题,达到一个目的往往需要从开始一步一步往下走,有时顺序执行、有时面临选择、有时面临循环。循环与选择控制着整个流程。看到下面的图片是不是感觉十分熟悉?顺序结构就是从上至下一步步执行,咱就不在这里多说了。直接拿Python语言中的分支语句开涮。
一、分支语句
在Python中分支语句只有if…elif…else…没有switch…case…,官方认为if…else…已经可以满足需求。分支语句的作用就是进行一下判断,筛选出来符合某种情况的数据,换一种说法就是不同的情况做出不同的事情。
# 单分支结构 if 80>70: print('无敌666') # 多分支结构 s=int(input("请输入您的考试成绩:")) if 100>=s>=90: print("你的成绩无敌了") if s>95: print('你的成绩至高无上') else: print('你的成绩一人之下万人之上') elif 90>s>60: print('你的成绩仅仅是合格') else: print('你的成绩不合格,或输入不规范') # 条件表达式【类似于C++语言中的三目运算符】 print("我是对的" if 90>80 else "我是错的") # 占位符与对象的布尔值 # 每个对象都有布尔值,所以对象可以直接放到条件语句中,作为判别条件 # python中也是只有0或空为bool中的false # 占位符就是当你不知道那里写什么,但确实缺少语句处站住位置,编译器不报错 pass ss=int(input("输入对象:")) if ss: print('yes') pass elif ss>1: print('no') else: pass
二、循环语句
1.可迭代对象
在说循环语句之前,先说一下什么是可迭代对象,可迭代对象每次返回一个元素
主要包含序列、文件对象、迭代器对象、生成器函数。迭代器是一个对象表示
可迭代的数据集合,他的主要特征就是包括方法__iter__()和__next__(),可以实现
迭代功能。生成器是一个函数,使用yield语句,每次产生一个值。range对象是一个迭代器对象。
在Python中循环语句还是分为while与for循环。
2.while循环
while后面是循环条件,在下面的例子中i就是循环变量,当循环变量不满足循环条件时就退出循环 以下例子打印1-100的和 • 1 • 2
代码如下:
i=1 mysum=0 while i<=100: mysum+=i i+=1 # print(mysum) print(mysum)
3.for循环
for循环的使用方法如下,一般结合迭代器对象使用。 • 1
代码如下:
# for循环计算100-999之间的水仙花数 for temp in range(100,1000): if temp==(temp%10)**3+(temp//10%10)**3+(temp//100)**3: print(temp) # 迭代打印语句 for _ in range(5): print('Hello World') # 利用else 实现密码输入错误三次报错,以及输入正确跳出循环 passward=0 for passward in range(3): if input('请输入您的密码:')!='888888': print('密码输入错误!') passward+=1 else: print('密码正确!') break else: print('密码多次输入错误,自动退出!')
4.九九乘法表
# 综合案例,嵌套打印99乘法表 for teg in range(1,10): temp=1 while temp<=teg: print(str(temp)+'*'+str(teg)+'='+str(teg*temp),end=' ') temp+=1 print()
三.循环控制语句
1.break
跳出本层循环
2.continue
跳过本次循环
3.goto
内置没有这个语句,但是有的第三方库中含有该语句
比如python-goto,感兴趣的小伙伴可以用一用。
4.else
这一点还是很独特的,Python的循环语句支持else语句,
也就是在循环语句之后可以加一句else语句。else代码
块内的代码被执行的条件是循环体没有被break.
还以九九乘法表为例
for teg in range(1,10): temp=1 while temp<=teg: print(str(temp)+'*'+str(teg)+'='+str(teg*temp),end=' ') temp+=1 print() else: print("asdholcnnl")
四、循环相关的内置函数
1.enumerate()
这个函数的作用就是为可遍历的序列加上索引,并且索引开始值是我们可以指定的
s=["Tom","jack","lisa"] for i,name in enumerate(s,start=1): print(f"第{i}个人是{name}")
2.zip()
如果需要并行遍历多个对象,可以使用这个函数进行打包。zip的作用就是将多个可迭代对象打包成一个个元组然后返回一个可迭代对象。如果被压缩的每个可迭代对象长度不同那么按照最短的那个长度合并。利用*运算符还可以将元组解压为列表。
[*zip(x,y)] 将x,y打包后再转换为列表形式
zip(*zip(x,y)),如果x,y代表一个矩阵,那么zip(*zip(x,y))就是其转置
for i,j in zip(range(0,10),range(0,10)): print(i*j)
3.map()
map函数可以传一个函数与多个可迭代列表,如果map传的函数为None那么map功能与zip函数相同。
如果传的是其余函数,那么函数将作用与每个对象。需要注意的是可迭代对象的数目要与传进去函
数的参数数目保持一致。
#结果1,1,12 list(map(abs,[-1,-1,-12])) #结果1 1 4 list(map(pow,range(3),range(3)))
总结
本篇博客主要分享了一下流程控制语句中的分支语句与循环语句,分支语句操作起来比较简单,大家主要掌握一下循环语句,特别是循环语句中的几个内置函数,无论是在写算法题还是数据分析中都很常用。