条件语句
1.流程控制
和其它编程语言一样,按照执行流程划分,Python 程序也可分为 3 大结构,即顺序结构、选择(分支)结构和循环结构:
-
Python 顺序结构就是程序会自上而下依次执行每一条 Python 代码,不重复执也不跳过任何代码;
-
Python 选择结构也称分支结构,就是让程序在"分叉路口"有选择性的执行代码;
-
Python 循环结构就是让程序不断地重复执行同一段代码。
2.顺序结构
我们上面列出的代码都可以说是顺序结构的,因为是从上向下按照顺序的执行每一行代码。比如:
# 1. 声明变量a
a = 10
# 2. 对a进行赋值操作
a += 20
# 3.判断a是否大于50
print(a>50)
# 4.打印a的值
print(a)
上面标注的1-4就是代码执行的顺序,中间没有分支和循环。
3.分支结构
很多情况,顺序结构的代码是远远不够的,比如一个程序限制了只能健康宝是绿码才可以通行,如果你是黄码或者红码则无法通行。这时候程序就需要做出判断,看用户的健康宝是绿码,是则放开闸门通行。
在Python中,可以使用 if...else 语句对条件进行判断,然后根据不同的结果执行不同的代码,这称为选择结构或者分支结构。
Python 中的 if...else 语句可以细分为三种形式,分别是 if 语句、if...else 语句和 if...elif...else 语句。
需要注意的是:
为了让Python解释器能准确地理解和执行我们编写的代码,在编写代码的时候我们要遵守一些规则,比如:缩进。
1. 每个if语句中的代码块从编程习惯的角度看都是有4个空格的缩进(或者一个Tab键)
2. 一个代码块的所有语句都要缩进,而且缩进量必须相同。
3. 不需要使用代码块的地方千万不要缩进
if、elif、else 语句的最后都有冒号:
(英文的冒号哦),表达式是一个整体最终的结果只能是True或者False。
总而言之,不管有多少个分支,都只能执行一个分支,或者一个也不执行,不能同时执行多个分支。
分支结构Python示例代码:
if结构:
color = input('请打开健康宝,输入健康宝的颜色(绿、黄、红):')
if color == '绿':
print('可以进入,放行')
print('绿色健康码可以通行其他的禁止进入!')
if...else结构:
color = input('请打开健康宝,输入健康宝的颜色(绿、黄、红):')
if color == '绿':
print('可以进入,放行')
else:
print('疫情期间不要随便乱走啊,在家乖乖待够14天吧!')
print('绿色健康码可以通行其他的禁止进入!')
if...elif...else结构:
color = input('请打开健康宝,输入健康宝的颜色(绿、黄、红):')
if color == '绿':
print('可以进入,放行')
elif color == '黄':
print('中风险地区的也是不能进入的,别出来啦不让进!')
elif color == '红':
print('你怎么出来的,偷跑出来的吧?别动我通知你们社区!')
else:
print('你手机坏了吗?这是什么颜色?回去吧!')
print('绿色健康码可以通行其他的禁止进入!')
另外如果if后面的表达式是:None、""(空字符串)、0、0.0、[]、()、{} 等都认为是False。
当然if也是支持嵌套的,即在一个if结构中又嵌套着一个if结构。
比如:
print('~~~欢迎进入王者荣耀~~~')
age = int(input('请输入年龄:'))
if age>=18:
print('每天8个小时,之后就要休息15分钟才能继续登陆游戏')
else:
if age<12:
print('王者荣耀健康系统提示你:只能玩一个小时,22时到次日8时无法进入游戏')
else:
print('王者荣耀健康系统提示你:每天最多可以玩两个小时哦!')
4.循环结构
循环语句允许我们执行一个语句或语句组多次,这种结构我们称作是循环结构。
Python的循环结构有:while循环和for 循环两种,但是没有do...while.具体如下:
同样也是需要大家注意:缩进的问题
5.while循环
其实while 循环和 if 条件分支语句还是很像的,在表达式为真的情况下,会执行对应的代码块。不同的地方是:只要条件为真,while 就会一直重复执行代码块。
while 语句执行的具体流程为:
首先判断条件表达式的值,其值为真(True)时,则执行代码块中的语句,当执行完毕后,再回过头来重新判断条件表达式的值是否为真,若仍为真,则继续重新执行代码块...如此循环,直到条件表达式的值为假(False),才终止循环。
比如:循环打印1-10之间的数字
# 变量初始化
i = 1
while i<=10:
print(i)
i+=1
print('我打印完啦!')
此循环务必注意三点:1. 变量初始化 2. 条件表达式 3. 循环体中变量要发生变化,否则很容易产生死循环。比如下面代码就是死循环:
# 变量初始化
i = 1
while i<=10:
print(i)
# i+=1
print('我打印完啦!')
因为i没有发生变化,所以判断条件i<=10是永远为True的。
再比如:我们通过随机数字模拟实现练习打枪。
# 我们的🎯靶心位置的数是10,如果射中则结束循环,否则一直练习
import random
center = 10
# 因为Python没有do...while,我们要先射击一下(产生一个随机数),然后判断
position = random.randint(1,10)
# 接下来判断
while position != center:
print('很遗憾啊!不过你会成功的加油吧!')
position = random.randint(1,10)
print('你是如此优秀!打中靶心啦!')
6.for循环
for 循环常用于遍历字符串、列表、元组、字典、集合等序列类型,逐个获取序列中的各个元素。
上图中:
for 变量 in 字符串|列表|元组|字典|集合:代码块
变量是用来存放从字符串|列表|元组|字典|集合中每次取出来的元素,而代码块指的是需要循环执行的代码部分,它是具有相同缩进格式的多行代码。
Python示例代码
s = '我为东京奥运会中国健儿加油'
for i in s:
print(i)
也可以打印数字,但是需要结合range()内置函数使用。
range(start,end) 数字是从start到end,但是不包含end
range(start,end,step) 数字是从start到end,默认step是1,如果指定,则按照指定的step
打印1-20的数字
for i in range(1,20):
print(i)
也可以打印1-20的奇偶数
for i in range(1,20,2):
print(i) # 1,3,5,7....
如果是列表也可以使用for遍历里面的元素
heros = ['赵云','刘备','诸葛亮','貂蝉']
for h in heros:
print(h)
Python中,无论是 while 循环还是 for 循环,其后都可以紧跟着一个 else 代码块,它的作用是当循环条件为 False 跳出循环时,程序会最先执行 else 代码块中的代码。
# 务必注意是循环条件为False的时候,程序才会执行else
i = 1
total = 0
while i <= 5:
total += i
i += 1
else:
print('累加和是:', total)
但是如果里面遇到关键字break的时候,就不会执行else里面的语句了。
注:
break 语句可以立即终止当前循环的执行,跳出当前所在的循环结构。无论是 while 循环还是 for 循环,只要遇到 break 语句,就会直接结束当前正在执行的循环体。
与break类似的一个关键字是:continue。continue 语句的作用并没有那么强大,它只会终止执行本次循环中剩下的代码,直接从下一次循环继续执行。也就是说循环还是会继续的
i = 1
total = 0
while i <= 5:
total += i
i += 1
if i==3:
print('遇到3我就跳出循环了!')
break # 跳出了while循环结构
else:
print('累加和是:', total)
这时候是没有total累加和的输出。
7.循环嵌套
if语句是支持嵌套的,而循环同样也是支持嵌套的。它则是在一个循环体中出现了另一个循环结构,我们就称之为嵌套循环结构。
比如:打印九九乘法表
for i in range(1, 10):
for j in range(1, i + 1):
print('%d * %d = %d\t' % (i, j, i * j), end='')
print()
事实上在开发的时候,还会遇到分支结构与循环结构的嵌套,即if里面有while或者for,又或者for或者while中有if判断等。比如:
import random
num = random.randint(1, 50)
print(num)
i = 1
while i <= 5:
ans = int(input("请猜数(1-50)之间:"))
if ans > num:
print("有点大了哥们!,加油就剩下%d次机会啦" % (5 - i)) elif ans < num:
print("有点小了哥们!,加油就剩下%d次机会啦" % (5 - i)) else:
print("哥们可以哦!恭喜中奖!!!")
break
i += 1
别忘了