今天我们详细的讲讲Python流程控制语句。包括if条件判断,while循环以及break和continue等。下一篇我们主讲Python中的序列,包括列表、元组、字典、集合等。

如果喜欢这篇文章,就点下文末的"在看"吧!

1. 条件判断语句

1). if 语句语法:if 条件表达式 :

代码块执行的流程:if语句在执行时,会先对条件表达式进行求值判断,

如果为True,则执行if后的语句

如果为False,则不执行

默认情况下,if语句只会控制紧随其后的那条语句,如果希望if可以控制多条语句,

则可以在if后跟着一个代码块代码块

代码块中保存着一组代码,同一个代码块中的代码,要么都执行要么都不执行

代码块就是一种为代码分组的机制

如果要编写代码块,语句就不能紧随在:后边,而是要写在下一行

代码块以缩进开始,直到代码恢复到之前的缩进级别时结束

缩进有两种方式,一种是使用tab键,一种是使用空格

Python的官方文档中推荐我们使用空格来缩进Python代码中使用的缩进方式必须统一

可以使用逻辑运算符来连接多个条件

如果希望所有条件同时满足,则需要使用and

如果希望只要有一个条件满足即可,则需要使用ornum =

if num > and num < :

print('num比10大, num比20小!')

#或是

if < num < :

print('num比10大, num比20小!'运行结果:

简单应用举例:

在命令行让用户输入一个用户名,获取用户输入,并进行判断

如果用户输入的用户名是admin,则显示欢迎管理员光临

如果用户输入的是其他的用户名,则什么也不做#获取用户输入的用户名

username = input('Please input your name:')

#判断用户是否是admin

if username == 'admin' :

print('Welcome admin user!')

运行结果:

正好上述代码用到了input函数,那么我们就说说input函数。input()函数

该函数用来获取用户的输入

input()调用后,程序会立即暂停,等待用户输入

用户输入完内容以后,点击回车程序才会继续向下执行

用户输入完成以后,其所输入的的内容会以返回值的形式返回

注意:input()的返回值是一个字符串

input()函数中可以设置一个字符串作为参数,这个字符串将会作为提示文字显示a = input('请输入任意内容:')

print('用户输入的内容是:',a)运行结果:

input()也可以用于暂时阻止程序结束

2). if-else语句语法:

if 条件表达式 :

代码块

else :

代码块执行流程:

if-else语句在执行时,先对if后的条件表达式进行求值判断

如果为True,则执行if后的代码块

如果为False,则执行else后的代码块age = int(input('请输入你的年龄:'))

if age > :

print('你已经成年了~~')

else :

print('你还未成年~~')

运行结果:

3). if-elif-else语句语法:

if 条件表达式 :

代码块

elif 条件表达式 :

代码块

elif 条件表达式 :

代码块

else :

代码块执行流程:

if-elif-else语句在执行时,会自上向下依次对条件表达式进行求值判断,

如果表达式的结果为True,则执行当前代码块,然后语句结束

如果表达式的结果为False,则继续向下判断,直到找到True为止

如果所有的表达式都是False,则执行else后的代码块

注意:if-elif-else中只会有一个代码块会执行age = int(input('请输入你的年龄:'))

if age > and age < :

print("你还未成年!")

elif age >= and age < :

print('你已经成年了!')

elif age >= and age < :

print('你已经中年了!')

elif age >= :

print('你已经退休了!')

else :

print('你的输入有误,请重新输入!')

运行结果:

If 语句练习:

练习1:编写一个程序,获取一个用户输入的整数。然后通过程序显示这个数是奇数还是偶数。#获取用户输入的整数

num = int(input('请输入一个任意的整数:'))

#判断并显示num是奇数还是偶数

if num % == :

print(num , "是偶数") #判断是否可以被整除,如果可以整除,那么这个数就是偶数

else :

print(num , '是奇数')运行结果:

练习2:编写一个程序,检查任意一个年份是否是闰年。#如果一个年份可以被4整除不能被100整除,或者可以被400整除,这个年份就是闰年

year = int(input('请输入一个任意的年份:'))

#检查这个年份是否是闰年

if year % == and year % != or year % == :

print(year,'是闰年')

else :

print(year,'是平年')

运行结果:

练习3:

我家的狗5岁了,5岁的狗相当于多大年龄的人呢?

其实非常简单,狗的前两年每一年相当于人类的10.5岁,然后每增加一年就增加四岁。

那么5岁的狗相等于人类的年龄就应该是10.5+10.5+4+4+4 = 33岁

编写一个程序,获取用户输入的狗的年龄,然后通过程序显示其相当于人类的年龄。

如果用户输入负数,请显示一个提示信息dog_age = float(input('请输入狗的年龄:'))

if dog_age < 0 :

print('你的输入不合法!')

#如果狗的年龄在两岁以下(包含两岁)

#直接将当前的年龄乘以10.5

elif dog_age <= 2 :

like_person_age = dog_age * 10.5

#如果狗的年龄在两岁以上

else :

#计算前两岁相当于人类的年纪

like_person_age = 2 * 10.5

#计算超过两岁的部分相对于人类的年纪,并进行相加

like_person_age += ( dog_age - 2 ) * 4

if dog_age > 0 :

print(dog_age,'岁的狗,年纪相当于',like_person_age,'岁的人')

运行结果:

在if也可以去嵌套if,代码块是可以嵌套的,每增加一个缩进的级别,代码块就低一级

所以上面代码让我们嵌套if 看看怎么写:(可实现和上一个代码一样的功能)dog_age = float(input('请输入狗的年龄:'))

#外层if嵌套检查用户的输入是否合法

if dog_age > 0 :

#如果狗的年龄在两岁以下(包含两岁)

if dog_age <= 2:

#直接将当前的年龄乘以10.5

like_person_age= dog_age * 10.5

#如果狗的年龄在两岁以上

else :

#计算前两岁相当于人类的年纪

like_person_age = 2 * 10.5

#计算超过两岁的部分相对于人类的年纪,并进行相加

like_person_age += ( dog_age - 2 ) * 4

print(dog_age,'岁的狗,年纪相当于',like_person_age,'岁的人')

else :

print('请输入一个合法的年龄!')

练习4:

从键盘输入小明的期末成绩:

当成绩为100时,'奖励一辆BMW'

当成绩为[80-99]时,'奖励一台iphone'

当成绩为[60-79]时,'奖励一本参考书'

其他时,什么奖励也没有#获取小明的成绩

score = float(input('请输入你的期末成绩(0-100):'))

#打印分割线

print("="*40)

#检查用户的输入是否合法

if 0 <= score <= 100 :

#判断发给的奖励是什么

if score == 100 :

print('宝马,拿去玩!')

elif score >=80 :

print('苹果手机,拿去玩!')

elif score >=60 :

print('参考书,拿去玩!')

else :

print('棍子一根!')

else :

#用户输入的不合法,弹出一个友好提示

print('你输入的内容不合法,请重新输入!')

运行结果:

2. 循环语句

1).while 循环

循环语句可以使指定的代码块重复指定的次数

循环语句分成两种,while循环和 for循环

今天我们来讲讲while循环

while循环语法:

while 条件表达式 :

代码块

else :

代码块执行流程:

while语句在执行时,会先对while后的条件表达式进行求值判断,

如果判断结果为True,则执行循环体(代码块),

循环体执行完毕,继续对条件表达式进行求值判断,以此类推,

直到判断结果为False,则循环终止,如果循环有对应的else,则执行else后的代码块

条件表达式恒为True的循环语句,称为死循环,它会一直运行,慎用!####死循环, 慎用!!!

while True :

print('hello')循环的三个要件(表达式):

1). 初始化表达式,通过初始化表达式初始化一个变量

i = 0

2). 条件表达式,条件表达式用来设置循环执行的条件

while i < 10 :

print(i)

3). 更新表达式,修改初始化变量的值

i += 1#创建一个执行十次的循环

i = 0

while i < 10 :

i += 1

print(i,'hello')

else :

print('else中的代码块')运行结果:

while循环练习

练习1. 求100以内的所有的奇数之和i = 0

sum = 0

while i < 100 :

i += 1

if i % 2 == 1 :

sum += i

print('100以内的所有奇数之和为',sum)

运行结果:

练习2.水仙花数是指一个n位数(n≥3),它的每个位上的数字的 n 次幂之和等于它本身(例如:1**3 + 5**3 + 3**3 = 153)。

求1000以内所有的水仙花数# 获取1000以内的三位数

i =

while i < :

# 假设,i的百位数是a,十位数b,个位数c

# 求i的百位数

a = i // 100

# 求i的十位数

b = (i - a * ) // 10

# 求i的个位数字

c = i %

# 判断i是否是水仙花数

if a** + b** + c** == i :

print(i)

i +=

运行结果:

练习3. 获取用户输入的任意数,判断其是否是质数。# 判断number是否是质数,只能被1和它自身整除的数就是质数

number = int(input('输入一个任意的大于1的整数:'))

# 判断number是否是质数,只能被1和它自身整除的数就是质数

# 获取到所有的可能整除number的整数

i =

# 创建一个变量,用来记录num是否是质数,默认认为num是质数

flag = True

while i < number:

# 判断number能否被i整除

# 如果number能被i整除,则说明number一定不是质数

if number % i == :

# 一旦进入判断,则证明number不是质数,则需要将flag修改为false

flag = False

i +=

if flag :

print(number,'是质数')

else :

print(number,'不是质数')运行结果:

2). while循环嵌套

循环嵌套时,外层循环每执行一次,内存循环就要执行一圈

while 嵌套练习

练习1.在控制台中打印如下图形

**********

**********

**********

**********

**********

创建一个循环来控制图形的高度i = 0

while i < 5:

#创建一个内层循环来控制图形的宽度

j = 0

while j < 10:

print("*",end='')

j += 1

print()

i += 1

运行结果:

练习2.打印99乘法表# 打印99乘法表

# 1*1=1

# 1*2=2 2*2=4

# 1*3=3 2*3=6 3*3=9

# ... 9*9=81

# 创建一个外层循环来控制图形的高度

i =

while i < :

i +=

# 创建一个内层循环来控制图形的宽度

j =

while j < i:

j +=

print(f"{j}*{i}={i*j} ",end="")

print()

运行结果:

3. break 和 continuebreak可以用来立即退出整个循环语句(包括else)

continue可以用来跳过当次循环

break和continue都是只对离他最近的循环起作用

补充:pass是用来在判断或循环语句中占位的

break举例:(当变量为4时 终止整个循环,所以只打印出了1 2 3)# 创建一个5次的循环

i = 0

while i < 5 :

i += 1

if i == 4 :

break

print(i)

else :

print('循环结束')

运行结果:

continue 举例:(当变量为4时跳过当次循环,所以只打印出了1 2 3 5)# 创建一个5次的循环

i = 0

while i < 5 :

i += 1

if i == 4 :

continue

print(i)

else :

print('循环结束')

运行结果:

讲了这么多,相信你已经对python的控制流语句有了大致的了解,让我们用之前所学到的知识试着写一个稍微复杂点的程序吧。

程序内容:唐僧大战白骨精

你将以唐僧的身份进行游戏,唐僧的初始生命值是2,攻击力是2。

然后请你选择如下操作:

1. 练级 ,每练级1次,生命值增加2,攻击力增加2

2. 打Boss 也就是打白骨精 白骨精的初始生命值是10,攻击力是10

3. 逃跑 若选择逃跑,游戏直接结束

如果选择2,也就是打白骨精,若一次没有打死,则白骨精会反击唐僧!

代码:##唐僧大战白骨精

#1 身份选择

#2. 游戏进行

print('='*+'欢迎来到游戏<<唐僧大战白骨精>>'+'清选择你的身份:'+'='*,end='')

print('''

请选择你的身份:

1. 唐僧

2. 白骨精

''')

person = input('请选择(1-2):')

print('-'*)

player_life = #player生命值

player_attack = #player攻击力

boss_life = #boss生命值

boss_attack = #boss攻击力

if person == '1' :

print('你已经选择了1,你将以->唐僧<-的身份进行游戏!')

print('-'*)

print(f'唐僧,你的生命值是{player_life},你的攻击力是{player_attack}')

print('-'*)

while True :

print('''请选择你要的操作(1-3):

1. 练级

2. 打BOSS

3. 逃跑

''')

operation = input('请选择你要进行的操作:')

if operation == '1' :

player_life +=

player_attack +=

print(f'恭喜你!->唐僧<-你升级了。 你现在生命值是:{player_life} 攻击力是:{player_attack}')

elif operation == '2' :

##玩家要攻击boss,减去boss生命值,减去的是玩家的生命值

boss_life -= player_attack

print('->唐僧<-攻击->白骨精<-')

##检查boss是否死亡

if boss_life <= :

print(f'白白骨精受到了{player_attack}点伤害,重伤不治死了,->唐僧<-胜利')

#游戏结束

break

##boss反击玩家

player_life -= boss_attack

print('->白骨精<-反击->唐僧<-')

if player_life <= :

print(f'->唐僧<-受到{boss_attack}点伤害,游戏结束!')

break

elif operation == '3' :

print('->唐僧一扭头<-,撒腿就跑,Game Over')

break

else :

print('你的输入有误,请重新输入!')

elif person == '2' :

print('你竟然选择了白骨精,太不要脸了,系统将自动分配身份')

else :

print('你的输入有误,系统将自动分配身份,你将以->唐僧<-的身份来进行游戏!')

试试执行上面的代码会出出现什么结果吧!

练级:

打Boss:

结果1 :唐僧胜利,游戏结束!

结果2 :唐僧打白骨精一次没有打死,白骨精反击唐僧,唐僧受到伤害,游戏结束!