python入门(一)---判断语句与循环控制
一、流程控制
流程,即计算机执行代码的顺序。简单地说,流程控制就是对计算机代码执行的顺序进行有效的管理,以便实现开发当中的各种业务逻辑。一般来说,对流程的控制可分为如下三类:
1、顺序流程
该流程是一种代码自上而下的执行结构,也是python默认的一种流程顺序。
2、选择/分支流程
程序执行时先依据相对应的条件表达式进行一次判断(条件表达式可以是比较运算符、逻辑运算符、复合运算符),根据判断的结果有选择的去执行相应的逻辑。一般有如下几类:
2.1单分支
if 条件表达式:
python代码
......
2.2双分支
if 条件表达式:
python代码
......
else:
python代码
......
2.3多分支
if 条件表达式:
python代码
......
elif 条件表达式:
python代码
elif 条件表达式:
python代码
......
else:
python代码
.....
3、循环流程
当满足一定的条件时,一直重复的去执行某段代码对应的逻辑。一般有如下两种结构:
while 条件表达式:
python代码
......
for ... in 可迭代集合对象:
python代码
......
二、循环控制
1、if-else语句
python条件语句通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。
该语句的执行流程图如下:
1.1单分支结构
满足if后的条件表达式便执行对应的代码块,否则便不执行。例如:
score=70
if score<=60: #满足条件就会输出打印的提示
print("成绩不是太理想,要继续加油哦")
pass #空语句
print("语句运行结束")
执行上述代码,显然会得到如下结果:
1.2双分支结构
与单分支结构不同,双分支结构必定会执行其中一个分支(if对应的分支或else对应的分支)。例如:
score=70
if score>60: #True
print("你的成绩及格了...")
pass
else: #false时候才会执行
print('成绩不合格,请继续努力')
pass
执行上述代码,显然会得到如下结果:
1.3多分支结构
多分支结构的一般形式前面已经说过,这里不再赘述。总的来说,多分支结构有如下特征:
1.只要满足其中一个分支,就会退出本层if语句结构(必定会执行其中一个分支)
2.至少有2种情况可以选择
3.elif 后面必须写上条件和语句
4.else 是选配,根据实际的情况来填写,并不一定需要
例如:
score=int(input('请输入你的成绩...'))
print(type(score))
if score>90:
print('您的成绩是A等级')
pass
elif score>=80:
print('您的成绩是B等级')
pass
elif score>=70:
print('您的成绩是C等级')
pass
elif score>=60:
print('您的成绩是D等级')
pass
else:#选配
print('可以回家修理地球了....')
print('程序运行结束了.....')
执行上述代码,显然会得到如下结果:
1.4 if-else的嵌套使用
实际应用时,一个具体的应用场景往往需要分阶段或者层次,做出不同的处理,此时可以通过对if-else的嵌套使用来解决问题,需要注意:
想要执行内部的 if 语句 一定要外部的 if语句满足条件才可以,例如:
xuefen=int(input("请输入你的学分"))
if xuefen>10:
grade = int(input("请输入你的成绩"))
if grade>=80:
print('你可以升班了..恭喜您')
pass
else:
print('很遗憾,您的成绩不达标...')
pass
pass
else:
print("您的表现也太差了吧...")
执行上述代码,显然会得到如下结果:
2、while循环
2.1 语法特点
1、循环体内计数变量有初始值
2、while后面有条件表达式
3、循环体内计数变量需要有自增自减操作,否则会造成死循环目的: 为了将相似或者相同的代码操作变得更加简洁,使得代码可以重复利用
2.2 while的使用
2.2.1 简单while的使用
假设现在需要打印输出1-100之间的数据,如果单纯的只使用print函数打印输出的话,会使得代码显得冗余,此时可以采用while循环以如下方式实现:
index=1 #定义一个变量
while index<=100:
print(index)
index+=1
pass
2.2.2 while的嵌套使用
假设现在需要打印输出打印九九乘法表,由于一共有9行9列,显然只使用一个while循环很难达到目的,此时我们可以在一个while循环里面再使用一个while循环,即while循环的嵌套来实现,具体代码如下:
row=9
while row>=1:
col=1
while col<=row:
print("%d*%d=%d"%(row,col,row*col),end=" ")
col+=1
pass
print()
# row+=1
row -= 1
pass
执行效果如下:
可以看到,和预期的九九乘法表是一致的
3、for循环
3.1 语法特点
遍历操作,依次取集合容器中的每个值
3.2 for的使用
3.2.1 for的简单使用
假设现在需要打印输出1-100之间的所有数据相加的数据和。此过程中需要使用到range()函数(此函数可以生成一个数据集合列表),其基本格式如下:
range(起始,结束,步长) #左边包含右边不包含
注意:步长不能为0
故可以采用如下代码实现:
sum=0
for data in range(1,101): #左边包含右边不包含
sum+=data #求累加和
# print(data,end=' ')
pass
print("sum=%d"%sum)
其运行效果如下:
可以看出,显然结果是正确的
3.2.2 for的嵌套使用
假设现在需要打印输出打印九九乘法表,由于一共有9行9列,显然只使用一个for循环很难达到目的,此时我们可以在一个for循环里面再使用一个for循环,即for循环的嵌套来实现,具体代码如下:
for i in range(1,10):
for j in range(1,i+1):
print("%d*%d=%d"%(i,j,i*j),end=' ')
pass
print() #控制换行
pass
执行效果如下:
可以看到,和预期的九九乘法表是一致的
4、break、continue语句
4.1 基本特点与作用
break: 代表中断结束,满足条件时直接结束本层循环
continue:表示结束本次循环,继续的进行下次循环(当continue的条件满足的时候,本次循环剩下的语句将不在执行
后面的循环语句继续执行)
说明:这两个关键字只能用在循环中
4.2 break语句的使用
假设现在只需要将1-20之间的数据依次打印输出,为说明break语句的功能,我们可以采用如下代码实现:
index=1
while index<=100:
if index>20:
break
pass
print(index)
index+=1
可得到如下的运行效果:
分析:由于break语句会跳出本层循环,故该循环会在执行到20之后终止。
4.3 continue语句的使用
假设现在需要将1-100之间的奇数依次打印输出,为说明continue语句的功能,我们可以采用如下代码实现:
print('continue的使用')
for item in range(1,100): #求出来奇数
if item%2==0:
continue
print('在continue的额后面会不会执行呢')
pass
print(item)
pass
可得到如下的运行效果:
分析:由于continue语句会结束本次循环,故该循环会在每次数据为偶数时终止本次循环(本题中即为每次遇到偶数时皆不执行后面的打印输出)
5、for----else和while----else
5.1 for----else
假设现在需要设计一个简易的系统账号登录提示程序,要求如下:
1、系统已经存储有账号信息:
账号:gzp
密码:789
2、一共有3次登录机会,3次机会内账号密码正确便提示登录成功,否则便提示账号已被锁定。
为简化代码量,可采用for----else结构设计如下程序:
account='gzp'
password='789'
for i in range(3):
zh=input('请输入账号:')
pd=input('请输入密码:')
if account==zh and pwd==pd:
print('恭喜您登录成功...')
break #退出本层循环了
pass
pass
else:
print('您的账号已经被系统锁定...')
经过验证,该程序可以很好的实现所要求的功能
5.2 while----else
while----else和for----else的使用方法基本一致,这里不再赘述
5.3 分析(两种结构极为相似,这里以while----else为例)
1、while循环部分没有break终止语句时,以如下代码为例:
index=1
while index<=10:
print(index)
index+=1
pass
else:
print('else执行了吗.....')
显然,该程序运行时会在将所需数值打印输出后,继续执行else部分语句,即:
2、while循环部分有break终止语句时,以如下代码为例:
index=1
while index<=10:
print(index)
if index==6:
break
index+=1
pass
else:
print('else执行了吗.....')
显然,该程序运行时在将所需数值打印输出后,由于break语句的存在,不会执行else部分语句,而是直接结束循环,即:
总结:这两种结构的特点就是在上面的循环当中,只要是出现了break,那么else的代码将不再执行,因此,该结构在设计某些特定的程序时会有意想不到的效果(减少工作量等)(如上述的简易的系统账号登录提示程序)