Python流程控制语句详解
1.程序结构
计算机在解决问题时,分别是顺序执行所有语句、选择执行部分语句、循环执行部分语句,分别是:顺序结构、选择结构、循环结构。如下图:
2.选择语句
2.1最简单的if语句
Python使用保留字if来组成选择语句,其格式如下:
- if 表达式:
- 代码块
表达式可以是一个单纯的布尔值或者变量,也可以是比较表达式或者逻辑表达式,如果表达式值为真,则执行“代码块”;如果值为假,就跳过“代码块”,执行后面语句,如图
注:1.在Python中,当表达式的值为非零的数或者非空的字符串时,if语句也认为是条件成立(即为真值)。
·· 2.使用if语句时,如果只有一条语句,那么语句块可以直接写到冒号“:”的右侧。但为了代码可读性不建议这么做。
3.常见错误:
- 1.if语句后面未加冒号
- number = 3
- if number == 3 #后面未加冒号,正确的是结尾处添加英文半角的冒号:if number == 3:
- print(number)
2.使用if语句时,如果在符合条件时,需要执行多个语句,一定要记得按照逻辑顺序进行代码缩进,否则程序的本意会有变化,但程序不会报错,且bug不容易发现。
代码1:
number = 3
if number == 3:
print(number)
print('这个是5')
代码2:
number = 3
if number == 3:
print(number)
print('这个是5'
2.2.if …… else 语句
Python中提供 if …else 语句来解决两个选择问题,其格式如下:
- if 表达式:
- 语句块1
- else:
- 语句块2
使用 if …else 语句时,表达式可以是一个单纯的布尔值或者变量,也可以是比较表达式或者逻辑表达式,如果表达式值为真,则执行“代码块”;如果值为假,执行else后面的代码块。如图所示:
技巧:
- if…else额语句可以使用条件表达式进行简化,如下:
- a = 5
- if a > 0:
- b = a
- else:
- b = -a
- print(b)
- 简化:
- a = 5
- b = a if a > 0 else -a
- print(b)
注:1. 在使用else 语句时,else一定不可以单独使用,它必须和保留字if一起搭配使用。
2.程序中使用if…else 语句时,如果出现多个if 语句多余else语句的情况,那么该else语句将会根据确定该else 语句属于哪个if语句。
2.3.if…elif…else语句
在开发程序时遇到多选一的情况,则可以使用if …elif…else语句,具体情况如下:
- if 表达式1:
- 语句块1
- elif 表达式2:
- 语句块2
- elif 表达式3:
- 语句块3
- …
- else:
- 语句块n
使用 if …elif…else 语句时,表达式可以是一个单纯的布尔值或者变量,也可以是比较表达式或者逻辑表达式,如果表达式值为真,则执行语句;如果值为假,则跳过该执行语句,进行下一个elif判断,只有表达式全部为假的情况下,执行else后面的代码块。如图所示:
注:1. if 和 elif 都需要判断表达式的真假,而 else 则不需要判断;另外 elif 和 elif 都需要跟 if 一起使用,不能单独使用。
2. 使用if语句时尽量避免遵循以下原则:
- (1).当使用布尔类型的变量作为判断条件时,假设布尔类型变量为flag,较为规范格式;
- if flag: #表示为真
- if not flag #表示为假
- 不符合规范格式:
- if flag == True:
- if flag == False:
- (2).使用 " if 1 == a: " 这样的书写格式可以防止错写成 " if a = 1: "这种形式,从而避免出错
2.4 if 语句的嵌套
前面已经介绍了3种形式的 if 语句,这三种都可以进行相互嵌套:
(1) . 在最简单的if语句中嵌套 if……else语句,形式如下:
- if 表达式1:
- if 表达式2:
- 语句块1
- else:
- 语句块2
(2). 在if……else中嵌套if……else语句,形式如下:
- if 表达式1:
- if 表达式2:
- 语句块1
- else:
- 语句块2
- else:
- if 表达式3:
- 语句块3
- else:
- 语句块4
注:if 选择语句可以有多种嵌套方式,开发时可以可以根据自身的需要进行选择合适的嵌套方式,但一定要严格控制好不同级别代码的缩进量。
3.条件表达式
在程序开发过程中,经常会根据表达式的结果,有条件的进行赋值,例如返回最大值:
- a = 6
- b = 3
- if a > b:
- c = a
- else:
- c = b
针对以上代码,使用条件表达式进行简化,如下:
- a = 6
- b = 3
- c = a if a > b else b
4.循环语句
4.1 while 循环
while循环是通过一个条件来控制是否要继续反复执行循环体(循环体是指一组被重复执行的语句)中的语句。
- while 条件表达式:
- 循环体
当条件表达式的返回值为真时,则执行循环体中的语句,执行完毕后,重新判断条件表达式的返回值,直到表达式返回的结果为假是退出循环体。
注:在使用while循环语句时,一定不要忘记添加将循环条件改变为Flase的代码,否则,将产生死循环。但开发中也离不开死循环,可根据情况进行编写。
4.2. for循环
for 循环是一个依次重复执行的循环,通常适用于枚举、遍历序列和对象中的元素。语法如下:
- for 迭代变量 in 可迭代对象:
- 循环体
迭代变量用于保存读除的值,对象为遍历或迭代的对象,该对象可以是任何有序的序列对象,如字符串,列表,元组等,循环体为一组被重复执行的语句。
for循环语句可以最基本的应用就是进行数值循环和遍历字符串。还可以进行遍历列表、元组、集合和字典。
4.3. 循环嵌套
在Python中,是允许在一个循环体中嵌套另一个循环。
(1). 在while循环中嵌套while循环
- while 条件表达式1:
- while 条件表达式2:
- 循环体2
- 循环体1
(2). 在for 循环中嵌套 for 循环
- for 迭代变量1 in 对象1:
- for 迭代变量2 in 对象2:
- 循环体2
- 循环体1
(3). 在while 循环中嵌套 for 循环
- while 条件表达式:
- for 迭代变量 in 对象:
- 循环体2
- 循环体1
(4). 在 for 循环中嵌套 while 循环
- for 迭代变量 in 对象:
- while 条件表达式:
- 循环体2
- 循环体1
特殊案例:九九乘法表
- for i in range(0,10):
- for j in range(1,i+1):
- print(str(j) + "*" + str(i) + "=" + str(i * j) +"\t" ,end = " "
- print("")
5.跳转语句
当循环满足一定条件时,程序会一直执行下去,如果需要在中间离开循环,也就是for循环结束重复之前,或者while循环找到结束条件之前,即break语句和continue语句。
5.1 break语句
break可以终止当前循环,包括for循环和while循环在内的所有控制语句。
在while中使用break语句:
- while 条件表达式1:
- 执行语句
- if 条件表达式2:
- break
在for 中使用break语句
- for 迭代变量 in 对象:
- if 条件表达式:
- break
while语句使用break for语句中使用break
5.2.continue语句
continue语句的作用没有break语句强大,他只能终止本次循环而提前进入下次循环中。
在while中使用continue语句
- while 条件表达式1:
- 执行代码
- if 条件表达式2:
- continue
在for 中使用continue语句
- for 迭代变量 in 对象:
- if 条件表达式:
- continue
while语句使用continue for语句中使用continue
注:break与continue的区别
break语句一般会结合if 语句进行搭配使用,表示在某种条件下,跳出循环。如果使用嵌套循环,break语句将跳出最内层循环。
continue语句一般也会结合if语句进行搭配使用,表示在某种条件下,跳出当前循环的剩下语句,继续进行下一轮循环,如果使用嵌套循环,continue语句将只跳过最内层循环中剩余语句。
6.pass语句
在Python中pass语句表示空语句,它不做任何事情,一般起到站位作用,常用在代码调试等。
- #例:
- for i in range(1,10): #输出1~10的数不包含10
- if i % 2 == 0: #判断是否是偶数
- print(i,end="") #在同一行打印偶数
- else: #不是偶数
- pass #占位符,不做任何事情,直接跳过
- #输出结果为:
- 2 4 6 8
Python流程控制语句详解的更多相关文章
- Mysql高手系列 - 第18篇:mysql流程控制语句详解(高手进阶)
Mysql系列的目标是:通过这个系列从入门到全面掌握一个高级开发所需要的全部技能. 这是Mysql系列第18篇. 环境:mysql5.7.25,cmd命令中进行演示. 代码中被[]包含的表示可选,|符 ...
- Python基础教程,流程控制语句详解
1.程序结构 计算机在解决问题时,分别是顺序执行所有语句.选择执行部分语句.循环执行部分语句,分别是:顺序结构.选择结构.循环结构.如下图: 很多人学习python,不知道从何学起.很多人学习pyth ...
- C#基础之流程控制语句详解
C#程序的执行都是一行接一行.自上而下地进行,不遗漏任何代码.为了让程序能按照开发者所设计的流程进行执行,必然需要进行条件判断.循环和跳转等过程,这就需要实现流程控制.C#中的流程控制包含了条件语句. ...
- Windbg命令脚本流程控制语句详解
在Windbg命令脚本一文里,我们介绍了命令脚本语言的的组成要素,在本文里将对语句进行展开的讲解.这些语句主要是流程控制的语句,比如我们常见的条件分子和循环语句等. ; (命令分隔符) 分号(:)字符 ...
- python协程详解
目录 python协程详解 一.什么是协程 二.了解协程的过程 1.yield工作原理 2.预激协程的装饰器 3.终止协程和异常处理 4.让协程返回值 5.yield from的使用 6.yield ...
- 《python开发技术详解》|百度网盘免费下载|Python开发入门篇
<python开发技术详解>|百度网盘免费下载|Python开发入门篇 提取码:2sby 内容简介 Python是目前最流行的动态脚本语言之一.本书共27章,由浅入深.全面系统地介绍了利 ...
- Python 字符串方法详解
Python 字符串方法详解 本文最初发表于赖勇浩(恋花蝶)的博客(http://blog.csdn.net/lanphaday),如蒙转载,敬请保留全文完整,切勿去除本声明和作者信息. ...
- python time模块详解
python time模块详解 转自:http://blog.csdn.net/kiki113/article/details/4033017 python 的内嵌time模板翻译及说明 一.简介 ...
- Python中dict详解
from:http://www.cnblogs.com/yangyongzhi/archive/2012/09/17/2688326.html Python中dict详解 python3.0以上,pr ...
随机推荐
- 关于hadoop3.x MR报错:找不到或无法加载主类 org.apache.hadoop.mapreduce.v2.app.MRAppMaster
用的apache Hadoop3.X,今天运行MR报错: 找不到或无法加载主类 org.apache.hadoop.mapreduce.v2.app.MRAppMaster 关键需要配置两个配置:ma ...
- STM32 HAL库学习系列---定时器TIM 输入捕获功能
基本方法 1.设置TIM2 CH1为输入捕获功能: 2.设置上升沿捕获: 3.使能TIM2 CH1捕获功能: 4.捕获到上升沿后,存入capture_buf[0],改为捕获下降沿: 5.捕获到下降沿后 ...
- 手写一个简版 asp.net core
手写一个简版 asp.net core Intro 之前看到过蒋金楠老师的一篇 200 行代码带你了解 asp.net core 框架,最近参考蒋老师和 Edison 的文章和代码,结合自己对 asp ...
- Lodash工具库中cloneDeep深拷贝的使用
在vue向数据库提交数据的过程中,可能需要处理某些数据,比如有以下要求:传递的参数必须是以逗号分隔的分类列表 但此时如果vue组件中的数据却是数组形式的这个时候需要用到数组的 join 方法对数据进行 ...
- Java 8 中如何优雅的处理集合
Java 8 中如何优雅的处理集合(Stream API) 在Java中,集合和数组是我们经常会用到的数据结构,需要经常对他们做增.删.改.查.聚合.统计.过滤等操作.相比之下,关系型数据库中也同样有 ...
- Nginx301重定向
1)301重定向,把blog.moonsbird.com和moonsbirl.com合并,并把之前的域名也一并合并. 有两种实现方法,第一种方法是判断nginx核心变量host(老版本是http_ho ...
- LeetCode DFS搜索与回溯专题
DFS + 回溯专题 17. 电话号码的字母组合 迭代也可以实现搜索 循环改写dfs搜索的写法: 例如 C++写法 class Solution { public: vector<string& ...
- 基于 kubeadm 搭建高可用的kubernetes 1.18.2 (k8s)集群 部署 dashboard 2.x
1. 部署dashboard 2.x版本 Dashboard 分为 1.x版本 和 2.x版本, k8s 使用的是1.18.2 故部署2.x版本的 # dashboard 2.x版本的部署 # 上传d ...
- 设计Dog类 代码参考
#include <iostream> #include <string> using namespace std; class Dog { private: string n ...
- 数据库之 MySQL --- 数据处理 之多表查询 (三)
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 一.多表查询 [1]什么是多表查询? 即,从多个表中获取数据. 注意: 在多表查询是,如果列明在两个表中 ...