您好,我是码农飞哥,感谢您阅读本文,欢迎一键三连哦

这篇文章主要介绍Python中流程控制的关键字的使用,涉及到if else,for,while等关键字

干货满满,建议收藏,需要用到时常看看。 小伙伴们如有问题及需要,欢迎踊跃留言哦~ ~ ~。

前言

有句话说程序就是由流程+数据结构组成。任何程序都是如此。前面花了好几个篇幅来介绍Python中的各种数据结构,这一篇文章接着来介绍下流程控制。数据结构说白了就是用来存储数据的,而流程就是用来控制系统的运行的。

流程控制

流程控制有三种结构,一种是顺序结构,一种是选择(分支)结构,一种是循环结构。

顺序结构:就是让程序按照从头到尾的顺序执行代码,不重复执行任何一行代码,也不跳过任何一行代码。一步一个脚印表示的就是这个意思。

选择(分支)结构:就是让程序根据不同的条件执行不同的代码,比如:根据年龄判断某个人是否是成年人。

循环结构: 就是让程序循环执行某一段代码。顺序的流程这里不做介绍了。

选择结构(if,else):

if语句

只使用if语句是Python中最简单的形式。如果满足条件则执行表达式。则跳过表达式的执行。其伪代码是:

if 条件为真:
代码块

如果if 后面的条件为真则执行代码块。否则则跳过代码的执行。

其流程图是:



就是说只使用if的话,则表达式成立的话执行代码块,不成立的话就结束。

下面就是一个简单的例子,如果满足a==1这个条件则打印a,否则跳过该语句。

a = 1
if a == 1:
print(a)

if else语句

if else语句是if的变体,如果满足条件的话则执行代码块1,否则则执行代码块2。其伪代码是:

if 条件为真:
代码块1
else
代码块2

流程图是:



同时使用if和else的话,则表达式成立的话执行一个代码块,表达式不成立的话则执行另一个代码块。

举个简单的例子吧。

age = 3
if age >= 18:
print('your age is', age)
print('adult')
else:
print("your age is", age)
print('kid')

根据输入的年龄判断某人是否是成年人。如果age大于等于18岁,则输出adult,否则输出kid。

if elif else语句

if elif else语句针对的就是多个条件判断的情况,如果if条件不满足则执行elif的条件,如果elif的条件也不满足的话,则执行else里面的表达式。其伪代码是:

if 条件为真:
表达式a
elif 条件为真:
表达式b
....
elif 条件为真:
表达是n-1
else
表达式n

其中elif可以有多个,但是elif不能单独使用,必须搭配if和else一起使用

需要注意的是if,elif和else后面的代码块一定要缩进,而且缩进量要大于if,elif和else本身,建议的缩进量是4个空格。同一代码中所有语句都要有相同的缩进。 依然是举例说明:

bmi = 80.5 / (1.75 * 1.75)
if bmi < 18.5:
print('过轻')
elif 18.5 <= bmi < 25:
print('正常')
elif 25 <= bmi < 28:
print('过重')
elif 28 <= bmi < 32:
print('肥胖')
else:
print('严重肥胖')
pass

下面就是根据bmi标准来判断一个人是过轻,正常还是肥胖。pass是Python中的关键字,用来让解释器跳过此处,什么都不做。

嵌套语句的使用

嵌套语句就是在一个if或者else的代码块中还存在子判断。如下例所示:

num = 23
if num < 20:
print('不构成饮酒行为')
else:
if 20 <= num and num < 80:
print('已达到酒驾的标准')
else:
print('已经达到醉驾的标准')

循环的关键字

while循环语句详解

while是作为循环的一个关键字。其伪代码是:

while 条件表达式:
代码块

一定要保证循环条件有变成假的时候,否则这个循环将成为一个死循环,即该循环无法结束。 其流程图是:



如果while中的表达式成立的话则执行循环体,否则的话则直接结束。

举个栗子:计算从1~100的求和,这就是一个经典的运用循环的场景

sum = 0
n = 1
while n <= 100:
sum = sum + n
n = n + 1
print('sum=', sum)

运行结果是sum= 5050,这个循环的结束条件是n>100,也就是说当n>100是会跳出循环。

range函数

range函数用于生成一系列的数字,其语法结构是:

range(start,end,step)

其各部分的语法解释是:

start表示开始的数字(包括,可以不填写),

end 结束的数字(不包括,必须填写),

step 步长(可以不填写),默认是1

计算1~100的求和可以通过range函数来实现则是这样:


sum = 0
for x in range(101):
sum = sum + x
print(sum)
print(range(101))

运行结果是:

5050
range(0, 101)

可以看出range()函数得到的是一个range对象,必须通过for循环解析输出其内容。range(101)实际运行的结果是range(0,101),默认start等于0,会输出0~100范围内的所有数字,不包括数字101。

for循环

在介绍range函数时用到了for关键字,这里介绍一下for关键字的使用。其语法结构是:

for 迭代变量 in 字符串|列表|元组|字典|集合:
代码块

字符串,列表,元祖,字典,集合都可以还用for来迭代。其流程图是:

for 循环就是:首先根据in 关键字判断序列中是否有项,如果有的话则取下一项,接着执行循环体。如果没有的话则直接结束循环。

range快速生成推导式

列表推导式

列表推导式的语法格式是

[表达式 for 迭代变量 in 可迭代对象 [if 条件表达式] ]

此格式中,[if 条件表达式]不是必须的,可以使用,也可以省略。下面就是输出1~10的列表的乘积的一个例子:

L = [x * x for x in range(1, 11)]
print(L)

此表达式相当于

L = []
for x in range(1, 11):
L.append(x * x)
print(L)

运行结果是:

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

来点复杂的吧,下面就是输出

print([x for x in range(1, 11) if x % 2 == 0])

运行结果是[2, 4, 6, 8, 10]

再来点复杂的,使用多个循环,生成推导式。

d_list = [(x, y) for x in range(5) for y in range(4)]
print(d_list)

运行结果是:

[(0, 0), (0, 1), (0, 2), (0, 3), (1, 0), (1, 1), (1, 2), (1, 3), (2, 0), (2, 1), (2, 2), (2, 3), (3, 0), (3, 1), (3, 2), (3, 3), (4, 0), (4, 1), (4, 2), (4, 3)]

上面代码,x是遍历range(5)的迭代变量(计数器),因此该x可迭代5次,y是遍历range(4)的计数器,因此该y可迭代4次。因此,该(x,y)表达式一共迭代了20次。它相当于下面这样一个嵌套表达式。

dd_list = []
for x in range(5):
for y in range(4):
dd_list.append((x, y))
print(dd_list)

元组推导式

元组推导式与列表推导式类似,其语法结构是:

(表达式 for 迭代变量 in 可迭代对象 [if 条件表达式] )

此格式中,[if 条件表达式]不是必须的,可以使用,也可以省略。下面就是输出1~10的元组的乘积的一个例子:

d_tuple = (x * x for x in range(1, 11))
print(d_tuple)

运行结果是:

<generator object <genexpr> at 0x103322e08>

从上面的执行结果可以看出,使用元组推导式生成的结果并不是一个元组,而是一个生成器对象。

使用tuple()函数,可以直接将生成器对象转换成元组。例如:

d_tuple = (x * x for x in range(1, 11))
print(tuple(d_tuple))

输出结果是(1, 4, 9, 16, 25, 36, 49, 64, 81, 100)

字典推导式

字典推导式的语法结构是:

{表达式 for 迭代变量 in 可迭代对象 [if 条件表达式]}

其中[if 条件表达式]可以使用,也可以省略。举个例子:

key_list = ['姓名:码农飞哥', '年龄:18', '爱好:写博客']
test_dict = {key.split(':')[0]: key.split(':')[1] for key in key_list}
print(test_dict)

运行结果是:

{'爱好': '写博客', '年龄': '18', '姓名': '码农飞哥'}

嵌套循环

嵌套循环就是循环里面还有循环,最经典就是冒泡排序。冒泡排序每次比较左右相邻的数字,如果前面的数字比后面的大则交换两个数字的位置。下面就演示一下:

test_list = [12, 3, 1, 13, 10, 5, 9]
for i in range(len(test_list)):
for j in range(len(test_list) - i - 1):
if test_list[j] > test_list[j + 1]:
tmp = test_list[j]
test_list[j] = test_list[j + 1]
test_list[j + 1] = tmp
print('第{0}循环后的结果是='.format(str(i)), test_list)
print('最终结果是=', test_list)

运行结果是:

第0循环后的结果是= [3, 1, 12, 10, 5, 9, 13]
第1循环后的结果是= [1, 3, 10, 5, 9, 12, 13]
第2循环后的结果是= [1, 3, 5, 9, 10, 12, 13]
第3循环后的结果是= [1, 3, 5, 9, 10, 12, 13]
第4循环后的结果是= [1, 3, 5, 9, 10, 12, 13]
第5循环后的结果是= [1, 3, 5, 9, 10, 12, 13]
第6循环后的结果是= [1, 3, 5, 9, 10, 12, 13]
最终结果是= [1, 3, 5, 9, 10, 12, 13]

冒泡排序过程介绍:

从上面可以看出,外层循环负责冒泡排序进行的次数,而内层循环负责将列表中相邻的两个元素进行比较,并调整顺序,即将较小的放在前面。

跳出循环

跳出循环的关键字有两个,一个是continue语句,一个是break。

  1. 其中continue语句用于跳出执行本次循环体中剩余的代码,转而执行下一次循环。
n = 0
while n <= 5:
n = n + 1
if n == 3:
continue
print(n)

运行的结果是:

1
2
4
5
6

可以看到数字3被跳过了。

2. break语句用于完全终止当前循环,需要注意的是如果是嵌套循环的话,只能中断使用break的循环。还是拿前面的冒泡排序来举个例子吧!

for i in range(len(test_list)):
for j in range(len(test_list) - i - 1):
if test_list[j] > test_list[j + 1]:
test_list[j], test_list[j + 1] = test_list[j + 1], test_list[j]
if j == 2:
print('内层循环break')
break
if i == 3:
print('外层循环break')
break

运行结果是:

内层循环break
内层循环break
内层循环break
内层循环break
外层循环break

可以看出内层循环的break不影响外层循环。也就是说break只会跳出当前的循环。

总结

本文简单介绍了Python中流程控制的几个关键字,选择结构的话就是: if,elif,else三个关键字。循环结构的话就是while和for两个关键字。语法比较简单。

我是码农飞哥,再次感谢您读完本文

全网同名【码农飞哥】。不积跬步,无以至千里,享受分享的快乐

我是码农飞哥,再次感谢您读完本文

【Python从入门到精通】(十)Python流程控制的关键字该怎么用呢?【收藏下来,常看常新】的更多相关文章

  1. Shell从入门到精通进阶之四:流程控制

    流程控制是改变程序运行顺序的指令. 4.1 if语句 4.1.1 单分支 if 条件表达式; then 命令 fi 示例: #!/bin/bash N=10 if [ $N -gt 5 ]; then ...

  2. 【java从入门到精通】day08-java流程控制-用户交互Scanner--顺序结构--选择结构

    1.java流程控制 Scanner对象: Java提供了一个工具类,可以获取用户的输入 java.until.Scanner是Java5的新特征,我们可以通过Scanner类来获取用户的输入 基本语 ...

  3. 【java从入门到精通】day10-Java流程控制2-switch多选择结构

    1.switch多选择结构 switch case语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支. switch语句中的变量类型可以是: byte.short.int或者char 从j ...

  4. 【Python从入门到精通】(二十五)Python多进程的使用

    您好,我是码农飞哥,感谢您阅读本文,欢迎一键三连哦. 本篇重点介绍Python多进程的使用,读者朋友们可以将多进程和多线程两者做一个对比学习. 干货满满,建议收藏,需要用到时常看看. 小伙伴们如有问题 ...

  5. Python 从入门到精通:一个月就够了

    毫无疑问,Python 是当下最火的编程语言之一.对于许多未曾涉足计算机编程的领域「小白」来说,深入地掌握 Python 看似是一件十分困难的事.其实,只要掌握了科学的学习方法并制定了合理的学习计划, ...

  6. ❤️【Python从入门到精通】(二十七)更进一步的了解Pillow吧!

    您好,我是码农飞哥,感谢您阅读本文,欢迎一键三连哦. 进一步介绍Pillow库的使用,详细了解 干货满满,建议收藏,需要用到时常看看. 小伙伴们如有问题及需要,欢迎踊跃留言哦~ ~ ~. 前言 本文是 ...

  7. Python从入门到精通视频(全60集) ☝☝☝

    Python从入门到精通视频(全60集) Python入门到精通 学习 教程 首先,课程的顺序需要调整:一和三主要是介绍学习和布置开发环境的,一介绍的是非VS开发,三介绍的是VS开发.VS2017现在 ...

  8. Python从入门到精通视频(全60集)✍✍✍

    Python从入门到精通视频(全60集)  整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课程本身没问题,大家看 ...

  9. 【Python从入门到精通】(九)Python中字符串的各种骚操作你已经烂熟于心了么?

    您好,我是码农飞哥,感谢您阅读本文,欢迎一键三连哦. 本文将重点介绍Python字符串的各种常用方法,字符串是实际开发中经常用到的,所有熟练的掌握它的各种用法显得尤为重要. 干货满满,建议收藏,欢迎大 ...

随机推荐

  1. linux ( crontab 定时任务命令)

    linux ( crontab 定时任务命令)    crontab 定时任务命令 linux 系统则是由 cron (crond) 这个系统服务来控制的.Linux 系统上面原本就有非常多的计划性工 ...

  2. Mybatis基础使用方法

    1.首先在数据库中建立一张表 create table login( name varchar(20) not null, username varchar(20) not null, passwor ...

  3. TVM性能评估分析(三)

    TVM性能评估分析(三) Figure 1. TVM's WebGPU backend close to native GPU performance when deploying models to ...

  4. 2D池化IPoolingLayer

    2D池化IPoolingLayer IPooling层在通道内实现池化.支持的池类型为最大, 平均 和 最大平均混合. 层描述:二维池化 使用张量上的2D滤波器计算池化a tensor A, of d ...

  5. pytest基础简介及实践举例

    一.pytest简介 pytest 是 python 的第三方单元测试框架,比自带的 unittest 更简洁和高效,同时兼容 unittest 框架.它还有如下优点: 1.简单灵活,容易上手,文档丰 ...

  6. thymeleaf模板引擎基础知识

    一.表达式 分为四类: 1.变量表达式 ${} :获取容器上下文变量的值. 举例: 获取application域中的username: ${application.username} 获取sessio ...

  7. 【NX二次开发】Block UI 字符串

    属性说明:     BlockID     String 控件ID     Enable     Logical 是否可操作     Group     Logical 是否分组     Label  ...

  8. 【linux】驱动-13-阻塞与非阻塞

    目录 前言 13. 阻塞与非阻塞 13.1 阻塞与非阻塞 13.2 休眠与唤醒 13.2.1 内核休眠函数 13.2.2 内核唤醒函数 13.3 等待队列(阻塞) 13.3.1 定义等待队列头部 13 ...

  9. Spring Boot WebFlu-05——WebFlux 中 Thymeleaf 和 MongoDB 实践

    第05课:WebFlux 中 Thymeleaf 和 MongoDB 实践 前言 本节内容主要还是总结上面两篇内容的操作,并实现一个复杂查询的小案例,那么没安装 MongoDB 的可以进行下面的安装流 ...

  10. 如何提升springboot服务吞吐量

    生产环境偶尔会有一些慢请求导致系统性能下降,吞吐量下降,下面介绍几种优化建议. 方案 1.undertow替换tomcat 电子商务类型网站大多都是短请求,一般响应时间都在100ms,这时可以将web ...