Python程序流程控制
一、分支语句
if结构
if结构的语法如下:
if 条件:
语句组
这个结构说明如下:
1、在条件后需要使用英文冒号
2、在语句组前需要进行缩进处理(Python规范中推荐使用4个半角空格)
if语句的执行过程如下:
![](https://i-blog.csdnimg.cn/blog_migrate/316be00bab3e5519537c527b64eec829.png)
# coding=utf-8
score = float(input("请输入考试分数(0~100):"))
if score >= 90.0:
print("您的成绩为优!")
if (score >= 80.0 and score < 90):
print("您的成绩为良!")
if (score >= 60.0 and score < 80):
print("您的成绩为及格!")
if score < 60:
print("您的成绩未及格,还需要努力!")
if-else结构
if-else的结构语法如下:
if 条件:
语句组1
else:
语句组2
这个结构说明如下:
1、条件后需要有英文冒号
2、else后需要带上英文冒号
3、在语句组前需要进行缩进处理(Python规范中推荐使用4个半角英文空格)
![](https://i-blog.csdnimg.cn/blog_migrate/5031d9f4faac2a9f0eb0dfc0ff007484.png)
# coding=utf-8
score = float(input("请输入一个0~100的分数:"))
if score>=60:
if score>=85:
print("您的成绩优秀!")
else:
print("您的成绩及格,还可以继续努力!")
else:
print("成绩不及格,请加倍努力!")
if-elif-else结构
if-elif-else语法结构如下:
if 条件1:
语句组1
elif 条件2:
语句组2
elif 条件3:
语句组3
……
elif 条件n:
语句组n
else:
语句组n+1
这个结构就是一个多分支的判断语句,根据不同的条件从上至下去匹配,匹配为True则执行对应的语句组,并结束后续的判断。
# coding=utf-8
score = float(input("请输入一个0~100的分数:"))
if score >= 90:
grade = 'A'
elif score >= 80:
grade = 'B'
elif score >= 70:
grade = 'C'
elif score >= 60:
grade = 'D'
else:
grade = 'E'
print("您的得分等级是:" + grade)
二、循环语句
Python支持的循环语句有两种:while和for
while语句
while语句的语法结构如下
while 循环条件:
循环体语句组
[else:
语句组]
语法结构说明
1、while后的循环条件以英文冒号结尾
2、循环体语句组前需要缩进(Python编程规范中推荐使用4个半角空格)
3、else部分不是必须的可以省略
![](https://i-blog.csdnimg.cn/blog_migrate/ebbd3374bfd009f8058de897aafff213.png)
从上面执行的流程来看,else语句只在while正常退出时才会执行,一旦循环被中断时不会执行else语句
# coding=utf-8
i = 0
while i * i < 10:
i += 1
print(str(i) + ' * ' + str(i) + ' = ' + str(i * i))
else:
print('while循环结束!')
# coding=utf-8
i = 0
while i * i < 10:
i += 1
if i == 3:
break
print(str(i) + ' * ' + str(i) + ' = ' + str(i * i))
else:
print('while循环结束!')
从上面的两段代码中可以看出当我们在while中使用了break,那么最后else的语句不会被执行。
for语句
for语句的语法结构如下
for 变量 in 可迭代对象:
循环体语句组
[else:
语句组]
for语句语法结构说明:
1、在可迭代的对象后以英文冒号结尾
2、循环体语句组开头要缩进(Python中推荐使用4个半角英空格)
3、else部分可以省略
这里说的可迭代的对象包含字符串、列表、元组、集合和字典……
![](https://i-blog.csdnimg.cn/blog_migrate/b8ad1b074deaeaf32ce0eaa39b1bd3aa.png)
# coding=utf-8
for item in range(10): # range(10)返回大于等于0小于10的一共10个整数
print(item)
else:
print('for循环结束!')
# coding=utf-8
for item in range(10): # range(10)返回大于等于0小于10的一共10个整数
if item==5:
break
print(item)
else:
print('for循环结束!')
这两段代码中上面的会正常执行完最后会打印else中指定的内容,下面的同上于到item==5的时候会break所以不会打印else中指定的内容。
三、跳转语句
Python中的跳转语句可以改变程序的执行顺序,包含break,continue,return。
其中,break,continue用于循环中;return用于函数中
break语句
用来强制性地退出循环体,不再执行循环体中剩余的语句
如下面这段代码
# coding=utf-8
for item in range(10): # range(10)返回大于等于0小于10的一共10个整数
if item==5:
break
print(item)
else:
print('for循环结束!')
当item的值等于5时,item==5的判断为True,执行break,循环会被终止掉
continue语句
用来结束本次循环,跳过循环体中还没有执行的语句,接着再从循环判断开始来进入下一次的循环。
如下这段代码
# coding=utf-8
for item in range(10): # range(10)返回大于等于0小于10的一共10个整数
if item==5:
continue
print(item)
else:
print('for循环结束!')
这里把break改为了continue,则当item==5为True时不做print(item),因为在它之前已经continue,这个时候会执行下一次的循环。
练习:求三位数据水仙花数
# coding=utf-8
# 水仙花数的计算,三位数,各位上的立方之和为三位数本身
i = 100 # 三位数最小从100开始
b1 = b2 = b3 = 0 # 记录生一个位上的,b1是个位,b2是十位,b3是百位
while i < 1000:
b3 = i // 100
b2 = (i - b3 * 100) // 10
b1 = i - b3 * 100 - b2 * 10
if i== (b1 ** 3 + b2 ** 3 + b3 ** 3): # 判断当前i的值是否为它的每一位的立方之和
print("i = " + str(i))
i += 1