返回顶部
首页 > 资讯 > 后端开发 > Python >python流程控制详细介绍
  • 573
分享到

python流程控制详细介绍

2024-04-02 19:04:59 573人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录1. 布尔逻辑1.1 条件控制语句-if1.2 if/else 语句1.3 if/elif 语句2 循环控制语句2.1 循环控制之for2.2 循环控制之while3 for v

前言:

经过简单的了解python基本语法和使用后,发现其都是一些顺序执行语句,也就是依次执行,没有任何的分支,循环,也不会返回到以前的执行语句-流程控制。在实际使用中,当然不可避免使用到流程控制语句,但其都要由逻辑表达式进行控制,因此先行介绍一下布尔逻辑。

1. 布尔逻辑

什么是布尔逻辑?

简单来讲,布尔逻辑就是操作真值。相比大多数编程语言一样,Python也使用布尔逻辑来做决策判断,使用True和False表示。一般经常使用的有4个布尔逻辑运算符,not、and、or、==。在Python语言的使用中,几乎所有判断决策都可以使用这四个逻辑运算符表示。首先我们计算布尔逻辑可能产生的值,假设a,b两个变量,那么对于它们来讲就有四个非真即假的组合,如下表:F表示FALSE,T表示TRUE

a

b

a==b

a!=b

a and b

a or b

not b

F

F

T

F

F

F

T

F

T

F

T

F

T

T

T

F

F

T

F

T

F

T

T

T

F

T

T

F

通过代码直观感受下布尔逻辑计算的结果:

==(逻辑相等), 当 a 和 b 包含的真 值相同,即都为 True 或都为 False 时,表达 式 a==b 的结果才为 True

!= (逻辑不等)

有计算的地方,就会涉及到计算的优先级,对于布尔运算的优先级,规则如下

优先级由高到低:

a==ba != bnot aa and ba or b

举个例子: not True and False or True,执行结果如下图True。可以看到其执行顺序为not True,在计算(not Ture) and False,最后是or,那么我们来简化下,这个求值结果是不是就是计算 False and False or True 。这也算是优化的一小步!当然,我们根据上面的表在考虑一下:and的优先级高于or,故而计算False and False 等价于 False。那么最后的表达式也就是计算 False or True。

所以,当需要使用比较复杂的布尔逻辑表达式的时候,需要特别注意括号的使用!

  • 了解了布尔逻辑的规则,Python同其它语言一样,使用了一定的方法,提高了布尔表达式的计算速度,这个方法被称为:短路求值。
  • 有兴趣的话可以自行深入了解下实现原理

运算规则

运算结果

a or b

如果 a 为 False,结果为 b,否则结果为 a

a and b

如果 a 为 False,结果为 a,否则结果为 b

这个逻辑表达式是Python使用者经常用到的,直观来讲,以 True or Any 为例,不论这个Any为什么值,其表达式结果都是True。同理,False and Any 的结果为False。但切记,逻辑好用的同时也会对代码产生可读性不好的体验感,可以用下面提到的if条件语句来实现运算规则体验一下!

1.1 条件控制语句-if

if-条件控制语句,它的作用是使得代码程序在执行的时候按照一定的条件进行决策改变。对于文本处理、脚本开发、网站开发、数据科学等各个方向的研究实现,几乎都会使用到if语句。

1.2 if/else 语句

假设有个简单的小需求:开机需要用户输入用户名和密码,如果正确则让其登录,如果不正确告知密码不正确。


if __name__ == "__main__":

    while True:
        scan_user = input('please input your name: ')
        scan_pass = input('please input your passwd: ')
        if scan_pass == 'if/else':
            print('Logging on now!')
        else:
            print('your passwd is incorrect!!')
        print('我不在if/else语句中!')


执行结果:

可以看到,如果变量scan_pass指向的字符串为"if/else",就会显示登录成功,如果不是,变量为任何值都会提示密码错误。

由此,我们来画一个if/else的基本语句结构:

在Python的使用中,通常会将 : 用作 if 语句头、循环头和函数头的结束标记。并且,其中的代码块可以包含任意数量的Python语句和其它if语句。在Python编程中,同样需要缩进代码块,不过与其它语言为了美观相比,Python必须使用缩进来表示一段代码块的所属。如上面那段示例的最后一行代码,并不在else语句中。

1.3 if/elif 语句

if/elif 语句是if/else语句的扩充,很多逻辑的实现不会仅仅只包含两个条件,它可能包含多个条件。比如某商场设定的一些优惠条件:满200打八折,满400打六折,满800超出400的部分打五折等等。

这样的代码实现如下:


if __name__ == "__main__":
    
    while True:
        consumer = int(input('请输入您的消费金额:'))
        money = 0
        if 200 <= consumer < 400:
            money = consumer * 0.8
            print('您的消费金额是:' + str(money))
        elif 400 <= consumer < 800:
            money = consumer * 0.6
            print('您的消费金额是:' + str(money))
        elif consumer >= 800:
            money = 400 * 0.6 + (consumer - 400) * 0.5
            print('您的消费金额是:' + str(money))

当输入消费金额之后,程序进入if/elif 语句,按照指定顺序依次进行判断,首先对消费金额进行大于200并小于400的判断,然后计算出此次消费金额,跳出语句,以此类推。需要注意的是: elif 是 else if 的缩写,编写时可以随意使用,但是每个代码块的缩进必须相同。

if/else 语句还有一个比较简单的写法,是一种有人喜欢有人不喜欢的写法。

通常如下:主要看response那一行代码,这行代码就等价于下面的if/else代码块。


if __name__ == "__main__":

    color = input('请问您最喜欢什么颜色?')
    response = 'blue' if color == 'red' else 'black'
    print(response)
if __name__ == "__main__":

    color = input('请问您最喜欢什么颜色?')
    if color == 'red':
        like = 'blue'
    else:
        like = 'black'


条件表达式通常比等价的 if/else 语句简短,但并非总是与 if/else 语句一样灵活和易于理解。一般而言,仅当条件表达式可让代码更简单时才会使用。

2 循环控制语句

上面的条件控制主要决策执行哪一段代码块,在编写代码时也会涉及到重复的执行某一段代码,这时就会用到循环控制语句。在每种语言的使用中,通常会用到的就是for循环和while循环两种循环控制语句。此处加个小说明:无论老师讲课还是日常使用中,经常会用到变量i,因为它是index的缩写。当开始使用循环语句的时候, 通常将 j 和 k 用作其他循环变量名。

2.1 循环控制之for

假设我们需要在屏幕上依次打印数字0~9,此时我们可以使用循环语句实现,如下:for循环的第1行被称为for循环头。for 循环总是以关键字for打头,接下来是循环变量(这里为 i),然后是关键字 in。关键字 in 后面通常(但并非总是)是 range(n) 和结束符号 : 。for 循环重复执行循环体(循环头后面的语句块)n 次。


if __name__ == "__main__":

    for i in range(10):
        print(i)

每次执行循环时,循环变量都被设置为下一个值。默认情况下,初始值为 0,并逐步递增到 n-1(而不是 n)。

如果要修改循环的初始值,可在 range 中添加初始值:


if __name__ == "__main__":

    for i in range(1,10):
        print(i)
    #或者给变量i+1   
 for i in range(10):
   print(i + 1) 

如果需要按照相反的顺序打印,则可以按照以下两个方法:


if __name__ == "__main__":

    for i in range(10, 0, -1):
        print(i)
        
    for i in range(10):
    print(10 - i) 

for循环当然不止运用于循环打印,在实际编程中,根据不同的需要,其可以适用于任何类型的迭代中。例如,使用for循环读取文本的行数据或者向文本中写入数据等等。

2.2 循环控制之while

对于while循环,在本人的使用中,对比for,感受到for循环更容易使用,但其却没有while循环的灵活性。同样,我们循环打印一些数字:


if __name__ == "__main__":

    i = 0
    while i < 10:
        print(i)
        i = i + 1


该代码与for循环的执行结果是一样的,但是直观来看,while循环的代码块要稍微复杂一些。while 循环本身以关键字 while 打头,这 一行被称为 while 循环头,而它后面缩进的代码被称为 while 循环体。以这个例子我们画一个while循环的执行流程图,

如下:

可以总结一下, while 循环的控制流程:

1.Python 检查循环条件为 True 还是 False(就是之前所阐述的布尔表达式),

  • 如 果为 True,就执行循环体;
  • 如果为 False,就跳过循环体(即跳出循环)并执行后面的语句。

2. 在条件为 True 并执行循环体后,Python 再次检查条件。只要循环条件为 True,Python 就不断执行循环体,直到跳出。

示例程序的第 1 行为 i = 0,在循环语境下,i=0被称为初始化语句。与 for 循环那样自动初始化循环变量不同,由编程者负责给 while 循环使用的变量指定初始值。而循环体的最后一行为 i = i + 1,随着循环的进行,i 的值不断递增,确保循环终将终止。在 while 循环中,这一行被称为递增语句,在本例中作用是让循环变量进行递增。

这样看来,for循环不需要编程者去定义初始化语句和递增语句,但是在开发中,使用者通常会发现这些语句一旦不注意则会导致bug出现,这也是为什么说while循环要比for循环更加灵活。

while循环在使用测试时,通常还有一个特性便是无线循环执行,实现只需要一行代码while true,只要使用,那么其循环体便会持续执行下去。在实际生产中,最好使用for循环来代替这种用法!后续也会阐述一些跳出循环的语句来避免。

3 for vs while

使用三个简单的小例子来看下for循环和while循环是如何解决相同的问题,同时体会一下二者的不同,这可以让我们更好的应用在实际的编程中去。

3.1 对输入的数字求和

本案例输入一些数字,然后求出这些数字的总和。

for循环实现:


if __name__ == "__main__":

    num = int(input('需要计算多少个数字:'))
    sum = 0
    for i in range(num):
        n = input('输入第' + str(i + 1) + '个数字:')
        sum = sum + int(n)
    print('输入的数字总和为:' + str(sum))


while循环实现:


    num = int(input('需要计算多少个数字:'))
    sum = 0
    i = 1
    while i <= num:
        n = input('输入第' + str(i + 1) + '个数字:')
        sum = sum + int(n)
        i = i + 1
    print('输入的数字总和为:' + str(sum))


二者实现的结果如下:

案例中的程序都是将输入的数字固定在整数,如果用户输入的是浮点数,调用 int(s) 时将会报错。当然,要支持用户输入浮点数很容易, 只需将int(s)改为float(s)即可。

3.2 未知个数字的求和

这个案例需要注意,上面的案例无论使用for循环或者while循环都可以实现需求,但是这个案例可以体验一下for循环无法处理,但是while循环适用的情况。需求:假设输入一系列数字,同样计算总和,但是并不知道会输入多少个数字,并且在输入结束时,我们以done为标识。


if __name__ == "__main__":

    num = input('输入完成标识(or "done"):')
    sum = 0
    while num != 'done':
        i = int(num)
        sum = sum + i
        num = input('输入完成标识(or "done"):')
    print('输入的数字总和为:' + str(sum))

试想一下,我们不知道会输入多少个数字,而是直到输入标识字符才会计算求和。这个代码块预先并不知道循环体执行多少次。

注意代码中的一些地方:

  • 1. 在循环体内,语句的排列顺序至关重要。如果循环条件为 True,就说明 num 不是 'done',所以假定它是一个整数。 因此,我们可以将它转换为整数,将其与总和相加。
  • 2. 必须在两个地方调用 input:循环前面及循环体内,因为循环条件判断输入是数字还是 'done'。
  • 3. 不再需要计数器变量 i。在上一个计算总和的示例中,i 用于记录输入了多少个数字。在日常使用中,程序包含的变量越少,越容易理解、调试和扩展。

3.3 阶乘计算

最后在体验一把二者都可以使用的情况:计算数字的阶乘,即1*2*3*4*...*n


if __name__ == "__main__":

    num = int(input('输入一个大于0的整数: '))
    k = 1;
    for i in range(2,num+1):
        k = k * i
    print(str(num) + '的阶乘值:' + str(k))

    num = int(input('输入一个大于0的整数: '))
    k = 1;
    i = 2;
    while i<=num:
        k = k * i;
        i = i + 1
    print(str(num) + '的阶乘值:' + str(k))

 

由于python对整数的最大取值没有限制,所以可以使用python来计算很大的阶乘值。

到此这篇关于python流程控制的文章就介绍到这了,更多相关python流程控制内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: python流程控制详细介绍

本文链接: https://lsjlt.com/news/160903.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • python流程控制详细介绍
    目录1. 布尔逻辑1.1 条件控制语句-if1.2 if/else 语句1.3 if/elif 语句2 循环控制语句2.1 循环控制之for2.2 循环控制之while3 for v...
    99+
    2024-04-02
  • Shell的流程控制介绍
    这篇文章将为大家详细讲解有关Shell的流程控制介绍,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。和Java、PHP等语言不一样,sh的流程控制不可为空,如(以下为PHP流程控制写法):&l...
    99+
    2023-06-09
  • linux启动流程详细介绍
    linux启动流程简介 我们都知道,由于linux的稳定性,通常被作为服务器系统,要想称为一个PHP的高手,linux是必修之课。那么linux系统从开机到启动,中间到底都发生了什么?本文来简单探讨一下中间...
    99+
    2022-06-04
    详细介绍 流程 linux
  • Python详细介绍模型封装部署流程
    目录一、桌面应用软件二、Pyside2&Qt designer三、模型封装部署四、Pyinstaller五、总结一、桌面应用软件 桌面应用软件是基于GUI(Graphical...
    99+
    2024-04-02
  • MyBatis详细执行流程的介绍
    本篇内容介绍了“MyBatis详细执行流程的介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Mybatis简介MyBatis 是一款优秀的...
    99+
    2023-06-14
  • Python Socket编程详细介绍
    在使用Python做socket编程时,由于需要使用阻塞(默认)的方式来读取数据流,此时对于数据的结束每次都需要自己处理,太麻烦。并且网上也没找到太好的封装,所以就自己写了个简单的封装。 封装思路 1....
    99+
    2022-06-04
    详细介绍 Python Socket
  • PHP不同控制语句的详细介绍
    本篇内容主要讲解“PHP不同控制语句的详细介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PHP不同控制语句的详细介绍”吧!PHP控制语句1、IF语句 IF语句是多数语言中的一个重要特点,它根...
    99+
    2023-06-17
  • SwiftAccessControl访问控制与断言详细介绍
    目录访问控制(Access Control)访问级别的使用准则元组类型泛型类型成员、嵌套类型getter与setter初始化器枚举类型的case协议扩展将方法赋值给var\let一些...
    99+
    2024-04-02
  • JavaSPI机制详细介绍
    目录为什么需要SPI?什么是SPI?SPI和API的区别来人,上点对抗spi-providerspi-user总结为什么需要SPI? 思考一个场景,我们封装了一套服务,别人通过引入我...
    99+
    2024-04-02
  • Linux系统配置(服务控制)详细介绍
    目录前言一、系统服务控制1、systemctl2、target3、常见系统服务4、开机自启服务管理二、服务管理1、防火墙与核心防护2、时间管理3、SSH服务结语前言 linux操作系统中包含了大量的服务程序,这些服务...
    99+
    2022-06-04
    Linux系统设置及基本操作
  • Linux系统配置(服务控制)详细介绍
    目录前言一、系统服务控制1、systemctl2、target3、常见系统服务4、开机自启服务管理二、服务管理1、防火墙与核心防护2、时间管理3、SSH服务结语前言   &...
    99+
    2024-04-02
  • Python线程指南详细介绍
    本文介绍了Python对于线程的支持,包括“学会”多线程编程需要掌握的基础以及Python两个线程标准库的完整介绍及使用示例。 注意:本文基于Python2.4完成,;如果看到不明白的词汇请记得百度谷歌或维...
    99+
    2022-06-04
    详细介绍 线程 指南
  • Python编程语言详细介绍
    目录一、语法1、缩进2、变量3、表达式4、类型5、方法二、 库1、Python的应用3、值得学习Python吗? 前言: Python是世界上最流行的解释型编程语言之一。Python...
    99+
    2024-04-02
  • C#流程控制语句的简单介绍
    这篇文章主要讲解了“C#流程控制语句的简单介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#流程控制语句的简单介绍”吧!C#流程控制语句在这两种语言中,C#流程控制语句是非常相似的,但是...
    99+
    2023-06-17
  • Java中IO流的详细介绍
    这篇文章主要介绍“Java中IO流的详细介绍”,在日常操作中,相信很多人在Java中IO流的详细介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java中IO流的详细介绍”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-20
  • node中Stream流的详细介绍
    目录一、是什么二、种类双工流双工流三、应用场景get请求返回文件给客户端文件操作一些打包工具的底层操作一、是什么 流(Stream),是一个数据传输手段,是端到端信息交换的一种方式,...
    99+
    2024-04-02
  • Vue封装DateRangePicker组件流程详细介绍
    目录前言一、封装el-date-picker二、父组件中进行引用总结前言 日期选择器在实际使用中,可能会要求默认固定日期、回显日期或者是时间固定点(00:00:00到23:59:59...
    99+
    2022-11-16
    Vue DateRangePicker Vue封装DateRangePicker组件
  • C#线程控制介绍
    这篇文章主要讲解了“C#线程控制介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#线程控制介绍”吧!在C#中,C#线程控制是如何开始的呢?线程入口是通过ThreadStart代理(del...
    99+
    2023-06-17
  • Mysql流程控制语句的介绍和使用
    平时绝大部分时间可能都用不到Mysql的流程控制语句,但如果我们需要写存储过程的话,就会用到了。有了流程控制语句,mysql就能想其他编程语言一样写程序了。下面分别来介绍条件分支与循环体。条件分支mysql...
    99+
    2024-04-02
  • Java IO流 - 打印流详细使用介绍
    文章目录 打印流打印流基本使用输出语句重定向 打印流 打印流基本使用 打印流: 作用:打印流可以实现更方便、更高效的打印数据到文件中去。打印流一般是指:PrintStrea...
    99+
    2023-09-05
    java 算法 开发语言
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作