python条件执行

布尔值有真(True)或者假(False)两个。

为了使程序能够根据条件执行不同的语句,通常需要判断一个布尔值。

布尔表达式可以给出布尔值。比如x == y就是一个布尔表达式,它会判断变量x与变量y是否相等。符号==是一个比较运算符,若两个运算对象相等,则返回True;若两者不相等,则返回False。

还可以使用其他的比较运算符:

x == y          # x等于yx != y          # x不等于yx > y           # x大于yx < y           # x小于yx >= y          # x大于等于yx <= y          # x小于等于yx is y          # x与y相同x is not y      # x与y不同

注意区分===,其中=是赋值符号,而==是比较运算符。

逻辑运算符包括与(and)、或(or)和非(not)三种,例如:

x > 0 and x < 10

这个表达式只有x > 0为真,且x < 10同时为真时,整个表达式才为真。

x > 0 or x < 0          # x > 0 或者 x < 0 为真,表达式即为真not (x == 0)            # x == 0 为假时表达式为真,即x不等于0时表达式为真

条件执行

如果想要程序在某种情况下执行一些代码,可以使用if语句。

if语句结构如下:

if 判断条件:
    执行语句块

判断条件一般是一个布尔表达式,当布尔表达式为真时执行语句块,否则不执行。

比如下面的例子:

x = 2if x > 0:
    print ('x是正数.')    # 只有在x>0为真时才会执行print ('x = ' + str(x))

上面的例子中,布尔表达式是x > 0,其值为真,因此执行if:下面的语句块——输出“x是正数.”。

str()函数将变量x中的数字转换成字符串。

最后一行的语句在if语句块之外,所以并不受if的影响,正常执行。

可以在执行语句块中放入多条语句:

x = 2if x > 0:
    print ('x是正数.')
    x = x + 1print ('x = ' + str(x))

这个程序中变量x最后的结果是3:

$ python python_if.py
x是正数.
x = 3

上面程序中if语句流程图如下:

分支执行

在上面的例子中,如果判断条件为真,则执行一些语句,否则什么都不执行。

如果要在判断条件为假的情况下执行一些语句,可以使用if...else语句:

if 判断条件:
    执行语句块    # 在判断条件为真时执行else:
    执行语句块    # 在判断条件为假时执行

下面是一个例子:

x = -1if x > 0:
    print ('x是正数.')else:
    print ('x不是正数.')

由于x的值为-1,所以x > 0的值为假(false),因此执行else:下面的语句块。

这个例子运行结果如下:

$ python python_if_else.py 
x不是正数.

流程图如下:

嵌套条件

if语句可以嵌套使用:

x = 2y = 3if (x == y):
    print ('x 等于 y')else:
    if (x < y):
        print ('x 小于 y')
    else:
        print ('x 大于 y')

流程图如下:

在本例中,由于表达式x == y为假,所以执行else:部分:

if (x < y):
    print ('x 小于 y')else:
    print ('x 大于 y')

由于表达式x < y为真,所以输出“x 小于 y”。

下面是输出结果示例:

$ python python_nested_if.py 
x 小于 y

嵌套使用并没有什么特别之处,只是在if结构的执行语句块部分写了另一个if结构罢了。

还可以多层嵌套使用:

if 判断条件:
    执行语句块else:
    if 判断条件:
        执行语句块    else:
        if 判断条件:
            执行语句块        else:
            if ...

如果有很多个表达式需要判断,那么需要很多层嵌套,于是乎if...elif...else语句诞生了。

它的效果和if嵌套使用相同,只是缩进变得更简单。

下面是一个if...elif...else语句的例子:

x = 0if x > 0:
    print ('x是正数.')elif x == 0:
    print ('x是0.')else:
    print ('x是负数.')

如果有多个elif,那么else只会和最后的elif配对。

下面是它用if嵌套实现的版本:

x = 0if x > 0:
    print ('x是正数.')else:
    if x == 0:
        print ('x是0.')
    else:
        print ('x是负数.')

这两个程序执行效果完全相同,使用if...elif...else语句能使缩进少一些。

输出结果示例:

$ python python_if_elif.py 
x是0.

流程图如下:

原文发布于微信公众号 - mwangblog(mwangblog)

原文发表时间:2018-02-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏五毛程序员

C++知识点整理——持续更新

2164
来自专栏coder修行路

go基础之--函数和map

在整理函数之前先整理一下关于指针 指针 普通类型变量存的就是值,也叫值类型。指针类型存的是地址,即指针的值是一个变量的地址。 一个指针指示值所保存的位置,不是所...

2967
来自专栏Micro_awake web

es6(五):class关键字(extends,super,static)

ES5中,生成对象通过构造函数: 1 function A(name,age){ 2 this.name=name; 3 this...

2227
来自专栏开源优测

[快学Python3]Sets(集合)

概述 set是Python的基本数据类型,它有可变集合(set()) 和不可变集合(frozenset)两种,在本节中,我们主要讲解set的使用方法。set和d...

2877
来自专栏Golang语言社区

Go语言指针

Go 语言中指针是很容易学习的,Go 语言中使用指针可以更简单的执行一些任务。 接下来让我们来一步步学习 Go 语言指针。 我们都知道,变量是一种使用方便的占位...

34412
来自专栏散尽浮华

python基础随笔

一: 作用域 对于变量的作用域,只要内存中存在,该变量就可以使用。 二:三元运算 name = 值1 if 条件 else 值2 如果条件为真:result =...

2219
来自专栏angularejs学习篇

angularjs学习第八天笔记(指令作用域研究)

angularjs其作用域通过scope来实现,其取值有三种情况:true、false、{}

901
来自专栏北京马哥教育

最全 Python3 函数知识点大全

27711
来自专栏WindCoder

JavaScript中字符串与数组的相关操作

如果不包含在数组中,则返回 -1,若是包含,则返回对应元素所在数组中的下标值,该值从0开始;

1281
来自专栏Python小屋

Python元组与列表的相同点与区别

列表和元组都属于有序序列,支持使用双向索引访问其中的元素、使用内置函数len()统计元素个数、使用运算符in测试是否包含某个元素、使用count()方法统计指定...

3106

扫码关注云+社区

领取腾讯云代金券