流程控制
流程控制常用的是条件分支流程的if/else语句和循环控制的while语句。
1.条件分支流程
当达到某种条件的时候才会触发的代码。
(1)语法1
if 布尔表达式: #如果为真则执行内部的代码块 代码块
布尔表达式的结果只有两个,要么真,要么假,如果是真的,那么就执行if语句里面的代码块,否则就跳过不执行。
例子:
a = 10 b = 20 if a < b: print("真的") if a > b: print("假的")
执行结果:
真的
从这里可以看出第一个if语句里面的布尔表达式(a<b)为真,所以执行了里面的代码块print(“真的”),而第二个if语句里面的布尔表达式(a>b)是假的,所以里面的代码块没有被执行,所以不输出“假的”两字。
(2)语法2
常用的if/else语句,语法如下:
if 布尔表达式: 代码块 else: 代码块
判断的逻辑是如果布尔表达式为真,则执行if内部的代码块,如果为假则执行else内部的代码。
例子:
a = 10 b = 20 if a > b: a = 30 print(a) else: print(1111)
执行结果:
1111
(3)语法3
if 布尔表达式1: 代码块 elif 布尔表达式2: 代码块 elif 布尔表达式3: 代码块 .... else: 代码块
逻辑是如果布尔表达式为真,则执行if内部的代码块,如果为假则执行else内部的代码,这个语法适用于多个连续条件判断。
例子:
s = int(input("请输入分数:")) if 80 >= s >= 60: print("及格") elif 80 < s <= 90: print("优秀") elif 90 < s <= 100: print("非常优秀") else: print("不及格")
随意输入100以内的数字,不同区间内的数字结果是不一样的,例如92,执行结果为:
请输入分数:92 非常优秀
10
(4)语法4
这里可以将前面所讲的if/elif/else进行嵌套使用,来达到我们想要的目的。
例子
s = int(input("请输入分数:")) if 80 >= s >= 60: print("及格") elif 80 < s <= 90: print("优秀") elif 90 < s <= 100: print("非常优秀") else: print("不及格") if s > 50: print("你的分数在60分左右") else: print("你的分数低于50分")
随意输入数字,比如说55,执行结果:
请输入分数:55 不及格 你的分数在60分左右
2.循环流程
在前面我们讲过的流程控制语句的功能还是比较有限,比如说只能执行1次,要执行多次就得多写几个,有点麻烦,所以我们需要学习循环流程里面的循环语句,它的作用就是重复运行某些代码。
(1)while循环
语法:
while 布尔表达式: 代码块
只要条件(布尔表达式)为真就执行里面的代码块。
举例:
while 4 < 5: s = int(input("请输入分数:")) if 80 >= s >= 60: print("及格") elif 80 < s <= 90: print("优秀") elif 90 < s <= 100: print("非常优秀") else: print("不及格") if s > 50: print("你的分数在60分左右") else: print("你的分数低于50分")
运行之后可以多次输入分数,并且永不停息:
请输入分数:56 不及格 你的分数在60分左右 请输入分数:70 及格 请输入分数:
当然这里有1个弊端,代码执行后陷入了死循环,while里面的代码被一直执行,因为4<5永远为真。
所以这里我们可以改善一下代码,不让它永远执行,让它循环执行几次就可以了,这里可以用个变量来作为条件判断,把4<5改成a<5,同时让在while里面实现自加的功能,在while里面代码每执行1次,执行到它那行的时候它加1,这样执行2次while就会跳出来。
a = 3 while a < 5: s = int(input("请输入分数:")) if 80 >= s >= 60: print("及格") elif 80 < s <= 90: print("优秀") elif 90 < s <= 100: print("非常优秀") else: print("不及格") if s > 50: print("你的分数在60分左右") else: print("你的分数低于50分") a += 1 print(a) print("while执行结束了")
执行结果:
请输入分数:55 不及格 你的分数在60分左右 请输入分数:65 及格 5 while执行结束了
这里我再给大家举个例子来理解while循环的运用。比如说输入一个整数并计算各个位和,例如输入321,那么各个位之和则为6。
# 请输入一个整数,并计算各个位和 如:321=6 n = int(input("请输入一个整数:")) # 将字符串转为整型 # sums累加器:m=10 m=10+5 sums = 0 while n != 0: # 32 #3 sums = sums + n % 10 # sums=1+2=3+3=6 n = n // 10 # 32 print(sums)
我输入的2345,执行结果:
请输入一个整数:2345 14
(2)for循环
for循环和while循环都是循环语句,但不一样的点在于for循环是技术循环。
语法:
l=[3,2,1] for 变量 in 可迭代对象: 代码块
例子:
l=[3,2,1] for n in l: print("1")
执行:
1 1 1
l是个列表,后面我们会讲,列表里面有3个元素,每执行一次for循环,列表里面的元素就会被赋值给n,直到列表里面没有了元素可赋值,则n就跳出了列表,此时的for循环就不成立了,不执行for里面的代码块。
(3)range
for循环经常会搭配range来使用,range是一个可迭代对象,range的语法如下:
range(start=0,stop,step=1)
start值的是开始下标。range序列里面的所有元素都有下标,第一个元素的下标是0,所以,默认是从0开始。
stop是结束位置。结束的位置下标为(元素个数-1),例如range里面有4个元素,那么结束下标最大为3,大于3则跳出range。
step是步长,如果step是2,那么每次会隔开1个元素,默认步长为1,即每个元素都会取到。
举例:
for i in range(8): #可以不写star和step,但结束位置一定要写的 print(i) print("---------") for i in range(10, 2, -2): print(i)
执行结果:
0 1 2 3 4 5 6 7 --------- 10 8 6 4
通过第一个for循环可以看出,range()的第一个元素的下标是从0开始,而不是从1开始;range()可以不写开始下标和步长,但一定得有结束位置;第二个for循环可以看出步长可以为负数,用于递减。
(4)continue
continue的作用是跳过本次循环,后面的循环继续执行,例如:
for i in range(1, 10): if i == 5: continue print(i)
执行结果:
1 2 3 4 6 7 8 9
很明显,i等于5的时候,for循环就跳过去了,本次不再执行里面的代码,重新回到了新的循环。
(5)Break
例如在这里,我们打印从1到10的严重数字,并且如果counter的值等于7,则终止循环。
# python example of break statement counter = 1 # loop for 1 to 10 # terminate if counter == 7 while counter<=10: if counter == 7: break print(counter) counter += 1 print("outside of the loop")
执行结果:
1 2 3 4 5 6 outside of the loop
Python系列基础学习持续更新中!