python流程控制详细介绍

目录
  • 1. 布尔逻辑
    • 1.1 条件控制语句-if
    • 1.2 if/else 语句
    • 1.3 if/elif 语句
  • 2 循环控制语句
    • 2.1 循环控制之for
    • 2.2 循环控制之while
  • 3 for vs while
    • 3.1 对输入的数字求和
    • 3.2 未知个数字的求和
    • 3.3 阶乘计算

前言:

经过简单的了解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流程控制内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python程序流程控制实验

    1. 编写程序计算 1+3+5+7…+99 之和. sum=0 for i in range(1,100,2):     sum+=i print(sum) 2. 编写程序,计算 2+4+6+8…+100 之和. sum=0 for i in range(2,101,2):     sum+=i print(sum) 3. 编写程序,使用不同的实现方法输出 2000~3000 的所有闰年,运行效果如下图所示. num=0 for i in range(2000,3001):     if (i%

  • Python流程控制语句的深入讲解

    1.程序结构 计算机在解决问题时,分别是顺序执行所有语句.选择执行部分语句.循环执行部分语句,分别是:顺序结构.选择结构.循环结构.如下图: 2.选择语句 2.1最简单的if语句 Python使用保留字if来组成选择语句,其格式如下: if 表达式: 代码块 表达式可以是一个单纯的布尔值或者变量,也可以是比较表达式或者逻辑表达式,如果表达式值为真,则执行"代码块":如果值为假,就跳过"代码块",执行后面语句,如图 注:1.在Python中,当表达式的值为非零的数或者

  • Python学习之流程控制与条件判断总结

    目录 初识条件判断(逻辑判断) 逻辑判断与逻辑语句 if语句 关于逻辑判断应用的总结 if…else…语句 elif语句 关于条件判断的条件嵌套 条件语句的总结 关于条件语句的小练习 初识条件判断(逻辑判断) 逻辑判断与逻辑语句 什么是逻辑判断? —> 对于一件事情的正确与否的判断,即 真假的判断:在 python 中,我们使用 bool 类型来判断真与假,对与错. 什么是逻辑业务? —> 根据逻辑判断的结果做不同的事情,就是我们需要做的逻辑业务. 什么是条件语句? —> 对于条件满足的

  • Python流程控制 while循环实现解析

    一.语法 while 条件: 执行代码 while就是当的意思,它指当其后面的条件成立,就执行while下面的代码. 例:写一个从0打印到10的程序 count = 0 while count <= 10: print('第%s次' % count) count += 1 如果要打印1~10之间的偶数怎么办呢? 那就得先搞清楚,怎么判断一个数字是偶数?能被2整除的就是偶数,但如何判断这个数是否能被2整除呢?简单,直接判断这个数除以2之后的余数是否为0就行了,这就用到了前面"Python之运

  • Python中的流程控制详解

    流程控制无非就是if else之类的控制语句,今天我们来看一下Python中的流程控制会有什么不太一样的地方. while语句 python中的while语句和其他语言没有什么不一样,我使用while语句来编写一个斐波拉赫数列: In [56]: while x < 10 : ...: print(x) ...: x, y = y, x+y ...: 0 1 1 2 3 5 8 if 语句 python中的 if 可以和 elif 或者 else 配合使用: >>> x = int

  • 简单谈谈Python流程控制语句

    人们常说人生就是一个不断做选择题的过程:有的人没得选,只有一条路能走:有的人好一点,可以二选一:有些能力好或者家境好的人,可以有更多的选择:还有一些人在人生的迷茫期会在原地打转,找不到方向.对于相信有上帝的人来讲,这就好像是上帝事先为我们制定好了人生路线,也好像是那些神仙为唐曾师徒的取经之路提前设置的重重磨难,上帝和神仙掌控了一切.编程语言可以模拟人类生活的方方面面,程序员就像上帝和神仙一样可以通过编程语言中特殊的关键字控制程序的执行过程,这些关键字组成的就是流程控制语句. 编程语言中的流程控制

  • Python执行流程控制 详情

    目录 一 引子 二 分支结构 2.1 什么是分支结构 2.2 为什么要用分支结构 2.3 如何使用分支结构 2.3.1 if语法 2.3.2 if应用案例 三 循环结构 3.1 什么是循环结构 3.2 为什么要用循环结构 3.3 如何使用循环结构 3.3.1 while循环语法 3.3.2 while循环应用案例 3.3.3 for循环语法 3.3.4 for循环应用案例 一 引子 流程控制即控制流程,具体指控制程序的执行流程,而程序的执行流程分为三种结构:顺序结构(之前我们写的代码都是顺序结构

  • Python中的程序流程控制语句

    目录 一.分支语句 二.循环语句 1.可迭代对象 2.while循环 3.for循环 4.九九乘法表 三.循环控制语句 1.break 2.continue 3.goto 4.else 四.循环相关的内置函数 1.enumerate() 2.zip() 3.map() 五.总结 前言: 本篇博客将会讲述一下Python语言中的流程控制语句,在高中我们数学中学过程序流程题,达到一个目的往往需要从开始一步一步往下走,有时顺序执行.有时面临选择.有时面临循环.循环与选择控制着整个流程.看到下面的图片是

  • python流程控制详细介绍

    目录 1. 布尔逻辑 1.1 条件控制语句-if 1.2 if/else 语句 1.3 if/elif 语句 2 循环控制语句 2.1 循环控制之for 2.2 循环控制之while 3 for vs while 3.1 对输入的数字求和 3.2 未知个数字的求和 3.3 阶乘计算 前言: 经过简单的了解python基本语法和使用后,发现其都是一些顺序执行语句,也就是依次执行,没有任何的分支,循环,也不会返回到以前的执行语句-流程控制.在实际使用中,当然不可避免使用到流程控制语句,但其都要由逻辑

  • python request 模块详细介绍

    request Requests 是使用 Apache2 Licensed 许可证的 基于Python开发的HTTP 库,其在Python内置模块的基础上进行了高度的封装,从而使得Pythoner进行网络请求时,变得美好了许多,使用Requests可以轻而易举的完成浏览器可有的任何操作. GET 请求 # 1.无参数实例     import requests     ret = requests.get('https://github.com/timeline.json')     print

  • Python 循环函数详细介绍

    目录 一.循环函数 1.for循环 2.while循环 3.中断循环 二.循环设计 1.range() 2.enumerate() 3.zip() 三.循环对象 1.什么是循环对象 2.迭代器 3.生成器 4.表推导 一.循环函数 1.for循环 for循环需要预先设定好循环的次数(n),然后执行隶属于for的语句n次. 基本构造是 for 元素 in 序列: statement 举例来说,我们编辑一个叫forDemo.py的文件 for a in [3,4.4,'life']: print a

  • python流程控制

    目录 1. 布尔逻辑 1.1 条件控制语句-if 1.2 if/else 语句 1.3 if/elif 语句 2 循环控制语句 2.1 循环控制之for 2.2 循环控制之while 3 for vs while 3.1 对输入的数字求和 3.2 未知个数字的求和 3.3 阶乘计算 前言: 经过简单的了解python基本语法和使用后,发现其都是一些顺序执行语句,也就是依次执行,没有任何的分支,循环,也不会返回到以前的执行语句-流程控制.在实际使用中,当然不可避免使用到流程控制语句,但其都要由逻辑

  • 一文了解Python 流程控制

    目录 while 循环 死循环与效率问题 结束循环的方式 方式一 将条件改成 False,等到下次循环在判断条件的的时候会生效 方式二 break,立即终止本层循环 while的循环嵌套和退出 Python 中有 while 和 for 两种循环机制,其中 while 循环是条件循环. while 循环 while 条件语句: // 条件为真,执行以下方法 functionsWhenConditionTrue() 简单的 for循环示例: count = 0 while count < 3: p

  • Python流程控制if条件选择与for循环

    目录 1.if条件选择 2.for循环 3.while循环 4.break 及 continue 1.if条件选择 # coding:utf-8 num = 23 if num>2: print("dayu") if num<2: print("xiaoyu") ## if else if num>10: print("D") else: print("A") ## if elif else if num &

  • Python Django中间件详细介绍

    目录 一 .中间件简介 二 .编写自己的中间件 三 .中间件执行流程 一 .中间件简介 中间件是Django请求/响应处理的钩子函数.它是一个轻量级的.低级的"插件系统",用于全局改变Django的输入和输出.中间件是帮助我们在视图函数执行之前都可以做一些额外的操作,它本质就是一个自定义类,类中定义几个方法,Djago框架会在特定的时候自动触发. 每个中间件负责做一些特定的功能.例如,‘django.contrib.auth.middleware.AuthenticationMiddl

  • Python 模块EasyGui详细介绍

    Python 模块EasyGui详细介绍 前言: 在Windows想用Python开发一些简单的界面,所以找到了很容易上手的EasyGui库.下面就分享一下简单的使用吧. 参考的链接:官网Tutorial 接下来,我将从简单,到复杂一点点的演示如何使用这个模块.希望能给刚接触easygui的你一点帮助 :-) msgBox,ccbox,ynbox # coding:utf-8 # __author__ = 'Mark sinoberg' # __date__ = '2016/5/25' # __

  • Python字典操作详细介绍及字典内建方法分享

    创建 方法一: >>> dict1 = {} >>> dict2 = {'name': 'earth', 'port': 80} >>> dict1, dict2 ({}, {'port': 80, 'name': 'earth'}) 方法二:从Python 2.2 版本起,可以使用一个工厂方法,传入一个元素是列表的元组作为参数 >>> fdict = dict((['x', 1], ['y', 2])) >>> f

  • python中进程间通信详细介绍

    目录 进程间通信(IPC) 管道通信(Pipe) 1.通信原理 2. 实现方法 共享内存 1.通信原理 2.实现方法 信号量(信号灯集) 1.通信原理 2. 实现方法 3.代码演示 进程间通信(IPC) 必要性 进程间空间独立,资源不共享,此时在需要进程间数据传输时就需要特定的手段进行数据通信 常用进程间通信方法 管道 消息队列 共享内存 型号 信号量 套接字 管道通信(Pipe) 1.通信原理 在内存中开辟管道空间,生成管道操作对象,多个进程使用同一个管道对象进行读写即可实现通信 代码演示(w

随机推荐