python的数据类型有好多个,前边写过字符串、整数和浮点数这三种。

本节来整理另一种简单数据类型--布尔值

布尔值(bool)

布尔值和其数据值

计算机可以用数据进行判断,若判断为真则执行特定条件中的代码块。若不为真则执行相反的指定条件内的代码块或不执行任何内容。

这种数据就是布尔值。其数据类型在python中标记为bool

布尔值其值比较特殊,不像字符串、整数那些,是用户自定的、无固定值的。他有固定的值,且只有两个:TrueFalse(⚠️首字母大写)。

示例代码

下列代码分别打印TrueFalse

  1. print(3>1) # True

    print(3<1) # False

其中,True表示真,说明条件成立。正如上例中,数字3是大于1的,判断的结果为“真”

相反,False表示假,说明条件不成立。正如上例中,数字3不小于1,判断的结果为“假”

只有当条件判断为True(即条件成立)时,if和while后面的子句才会执行下去

比如下边的代码

  1. if True:
    print('这句话肯定会被执行')

    if False:
    print('这句话肯定不会被执行')

⚠️特别的,在使用while时,如果当条件永远正确,那么就会出现循环一直执行停不下来、造成死循环现象。如下边的代码(千万不要轻易运行)

  1. while 3 > 1:
    print('糟了,是死循环的感觉!')

3>1的判断永远成立,得到True后,while一直执行出现死循环。

布尔运算

什么是布尔运算

根据布尔值数据所做的逻辑判断,叫做布尔运算

下例中,3>1就是布尔运算。

  1. print(3>1)

布尔运算产生布尔值

试想一下,为什么我们这么写,if条件就执行了呢?

  1. if 5 > 3:
    print('布尔运算产生布尔值')

if语句后边条件判断语句需要一个布尔值,来指定判断后的逻辑,如果判断为真,则将执行if后的代码块。

计算机会先做一次布尔运算,判断5是否大于3。判断结果是5>3这个布尔运算返回了布尔值——True,条件成立if语句运行。

布尔运算的三种方式

数值比较 - 比较运算符

数值运算 - 真假判断

布尔值运算 - 逻辑运算符

数值比较 - 比较运算符

python中的比较运算符

比较运算符 含义 备注
等于 == 判断数据和类型
不等于 != 英文感叹号
大于 >
小于 <
大于等于 >=
小于等于 <=

基本上就是小学数学!

::: tip ⚠️等于运算符(==)
1、需要两个等于号。一个等于号(=)是赋值的作用

2、不仅仅只判断左右两边的是否相等,还会判断符号左右的数据类型是否一致。

比如print(3 == '3')就会因为两边数据类型不一致,进而返回False
:::

数值运算 - 真假判断

除了用数值比较作为语句的判断条件外,我们可以用一个数据/数值本身作为一个条件,直接进行真假判断。如下:

  1. if 'False':
    print('这段你觉得会打印吗?')

最后执行结果,就是打印了'这段你觉得会打印吗?'这句话。

原因是,字符串'False'在这里就是作为一个条件,被判断为真(True)。

在Python中被判定为假的数据是有限的,官方文档规定的。如下:

python中的假值表

序号 认定为假的值 含义 备注
1 False 布尔值中的
2 0 整数0
3 None 数据类型NoneType
4 '' 空字符串空串 里边有内容就为真 注意区别空串和空格字符串‘ ’
5 [] 空列表 里边有内容就为真,如[0]
6 {} 空字典 里边有内容就为真,如{boolVal: Flase}

除了上述“假”值,其他值都会被判断为“真”。

  1. if False:
    print('False值为假,这句话不会被执行。')
    if 0:
    print('整数0为假,这句话不会被执行。')
    if None:
    print('空值None为假,这句话不会被执行。')
    if '':
    print('空串为假,这句话不会被执行。')
    if []:
    print('空列表为假,这句话不会被执行。')
    if {}:
    print('空字典为假,这句话不会被执行。')

以上案例显示,各个数据本身作为一个条件时,会被判定为假,if后面的条件为假,计算机就都不会执行if的下一行代码。

⚠️相反的,注意区分下边这些值,看上去和假值很像,但是他们都是

  1. if 'False':
    print('字符串"False"值为真,这句话会被执行。')
    if '0':
    print('字符串"0"值为真,这句话会被执行。')
    if -1:
    print('非0数字皆为真,这句话会被执行')
    if 'None':
    print('字符串"None"为真,这句话会被执行。')
    if ' ':
    print('空格字符串,不是空串!特别注意。空格字符串是真,这句话会被执行。')
    # 可见,只要字符串不为空串,都为真。
    if [0]:
    print('列表不为空,条件为真,这句话会被执行。')
    if {'boolVal': False}:
    print('字典不为空,条件为真,这句话会被执行。')

⚠️特别注意。空格字符串不是空串!他的布尔值是真

布尔值运算 - 逻辑运算符

逻辑运算符有以下五种运算:

运算符 含义 备注
and 并且
or 或者
not 取反
in 属于 判断数据是否属于一个字典或列表
not in 不属于 同上,取反。判断不属于

篇幅比较大,整理到下边一个大模块中。

逻辑运算符

and - 与

and的计算逻辑

我自己学习js的并且(&&)时总结的顺口溜,同样适用于python中的并且(and):

  1. # 关于判断规则
    真真才为真
    有假不算他

    # 关于返回结果
    真真得末尾
    遇假返回假

解释:and左右的条件,都为真时,总的判断结果就为真。否则一旦左边或右边有假值,则整个结果都是假的。

如果两边都是真值,返回结果为最后的那个真值。

如果两边有假值,则返回第一个遇到的假值。

and案例

  1. # 真真才为真 案例:
    if 1 and 2:
    print('真真返回结果:',1 and 2) # 真真返回结果: 2(返回最后的那个真值)

    # 有假不算他 案例:
    if 2 and None:
    print('不成立')
    else:
    print('真假返回结果:',2 and None) # 真假返回结果: None(返回第一个遇到的假值)
    if 0 and False:
    print('条件不成立,这里不打印')
    else:
    print('假假返回结果:',0 and False) # 假假返回结果: 0(返回第一个遇到的假值)

    # 两边表达式,左边有假,则返回结果是第一个假表达式的执行结果:
    a = 1
    b = 2
    c = 3
    d = 4
    if a > b and c < d:
    print('条件不成立')
    else:
    print('真假表达式返回结果:', a > b and c < d) # False (a>b的结果)

and对价值是零容忍的,只要有假、立马判定为假,谁说都不好使!

or - 或

or的计算逻辑

同样来一段我学习时的顺口溜:

  1. # 关于判断规则
    有真即为真
    假假才算假

    # 关于返回结果
    有真返回真
    假假返末尾

解释:or左右的条件,只要有一个为真时,总的判断结果就为真。

必须左、右两边都是假值时,整个结果才是假的。

如果两边都是真值、或者两边其中一边有一个真值,则返回结果为第一个遇到的真值。
如果两边都是假值,则返回最后的那个假值。

or的案例:

  1. # 有真即为真 案例:
    if 1 or 2:
    print('真真返回结果:',1 or 2) # 真真返回结果: 1(返回第一个遇到的真值)

    if 2 or None:
    print('真假返回结果:',2 or None) # 真假返回结果: 2(返回第一个遇到的真值)

    if None or 3:
    print('真假返回结果:',None or 3) # 真假返回结果: 3(返回第一个遇到的真值)

    # 假假才算假 案例:
    if 0 or False:
    print('条件不成立,这里不打印')
    else:
    print('假假返回结果:',0 or False) # 假假返回结果: False(返回最后的那个假值)

可以想象成or是对假值的容忍度很高,不监测到最后一个都为假,她是不会死心并直接判断为假值的。

not - 非

not表示翻转的意思。所谓取反,就是颠倒真假的意思。

not True就等于False,not False就等于True。

  1. print(not True) # False
    print(not False) # True

in - 属于

in用来判断一个元素是否在一堆数据之中
数据集合是列表的话,【in】和【not in】就可以用来判断变量在不在列表list里面(in在、not in不在)。

数据集合是字典的话,【in】和【not in】就可以用来判断字典中是否存在某个【键】(in在、not in不在):

  1. myName = ['小石头', 'xing.org1^', 181, True]
    dictName = {
    'name': '小石头',
    'age': 19,
    'hobby': {
    'it': ['css','js','python'],
    'daily': [['music','tv'],['apple','pear']],
    'sports': 'sleep'
    }
    }

    print('小石头' in myName) # True 该字符串存在于列表中
    print('gjf' in myName) # False

    print('hobby' in dictName) # True
    print('sex' in dictName) # False

not in - 不属于

in相反,用来判断一个元素是否不在一堆数据之中

  1. # 变量沿用in案例中的

    print('小石头' not in myName) # False 该字符串存在于列表中,非要说不在那是错误的,返回假值。
    print('gjf' not in myName) # True

    print('hobby' not in dictName) # False
    print('sex' not in dictName) # True

优先级

三者之间的优先级:() > not > and > or

类型查询 type()

数据类型和类型转换章节,提过type函数,他主要用于类型查询。

布尔类型作为数据类型中的一种,同样可以用type函数进行类型查询:

  1. print(type(True)) # <class 'bool'>

    print(type(False)) # <class 'bool'>

可以从打印结果看出来,布尔值的类型返回为<class 'bool'>

布尔值判断 bool()

虽然我们有python中的假值表, 肉眼就能辨别真假值。

不过python也提供了bool()函数来帮助我们判断数据的真假。下边是使用案例:

以下皆打印False

  1. print(1, bool(False))
    print(2, bool(0))
    print(3, bool(''))
    print(4, bool(None))
    print(5, bool([]))
    print(6, bool({}))

以下皆返回True

  1. print(1, bool('False'))
    print(2, bool('0'))
    print(3, bool(' '))
    print(4, bool('None'))
    print(5, bool([0]))
    print(6, bool({'boolVal': False}))
    print(7, bool('字符串除了空串都为真'))
    print(8, bool(-1))
    print(9, bool(1.3))
    print(10, bool([False]))

思考题

一百遍“我真棒”

用布尔运算实现while循环重复执行100遍打印“我真棒”的任务

  1. # 参考代码位于源代码files文件夹下对应章节的py文件中

本文使用 mdnice 排版

【python系统学习10】布尔值的更多相关文章

  1. Python基础 整形、布尔值、if条件判断、while循环、运算符、格式化输出

    1,计算机基础.2,python历史. 宏观上:python2 与 python3 区别: python2 源码不标准,混乱,重复代码太多, python3 统一 标准,去除重复代码.3,python ...

  2. 【python系统学习08】for循环知识点合集

    for循环 for简介 [循环]:就是依照某些我们编写的特定规则,重复的做一件事. 当你需要重复的"搬砖"的时候,可以用for循环进行遍历,让机器循环的帮你去"搬砖&qu ...

  3. 大爽Python入门教程 3-1 布尔值: True, False

    大爽Python入门公开课教案 点击查看教程总目录 1 布尔值介绍 从判断说起 回顾第一章介绍的简单的判断 >>> x = 10 >>> if x > 5: ...

  4. python基础学习10

    python基础学习 内容概要 文件内光标的移动 文件数据修改 函数简介 函数语法结构 内容详情 文件内光标的移动 with open(r'路径','r',encoding='utf8') as f: ...

  5. python之value和布尔值

    之前做判断的时候如果遇到空列表,空字符串,可以直接使用当做判断条件.比如: s = "" if s: print(s) 不是打印s的,也就在这里if的判断条件是False. 所以, ...

  6. Python 6 数字和布尔值及字符串的基本功能

    数据类型:查看变量数据类型type(变量)  或者  print(type(变量)) 整数int:就是不带小数的自然数字,也叫整型.在2.X版本中还分为长整型和整形.但是在3.X版本中统一称为整数或整 ...

  7. 小白学python之整型,布尔值,十进制二进制转换和字符串详解for循环!

    整型与字符串转化 十进制转二进制. python2,存在int 整型和long(长整型),在python3里就是int/获取的是浮点数 小数 print(bin(15)) 这样可以通过代码来计算十进制 ...

  8. 【python系统学习13】类(class)与对象(object)

    目录: 类(class)和实例 类 实例 小测试 对象(object) 属性和方法 类的创建 伪代码 示例代码 属性(attribute) 方法(method) 类的实例化 实例对象调用类属性和方法 ...

  9. 【python系统学习14】类的继承与创新

    目录: 目录: [toc] 类的继承 子类和父类 继承的写法 继承示例 父类可以被无限个子类所继承 子类实例可调用父类属性和方法 类的始祖(根类) 根类 - object 实例归属判断 - isins ...

随机推荐

  1. 对Java8新的日期时间类的学习(二)

    示例11 在Java中如何判断某个日期是在另一个日期的前面还是后面 这也是实际项目中常见的一个任务.你怎么判断某个日期是在另一个日期的前面还是后面,或者正好相等呢?在Java 8中,LocalDate ...

  2. Python基本了解

    1. 计算机基础知识 CPU : 人类的大脑,运算处理问题 内存 : 临时储存数据,断点数据就会消失,存储数据快 硬盘 : 永久存储各种数据,相对于内存存储速度慢 操作系统 : 本质上是一个软件,用于 ...

  3. Method POST, Status (canceled) error message

    I have the following code which is giving me a Method POST, Status (canceled) error message: $(docum ...

  4. MOOC(7)- case依赖、读取json配置文件进行多个接口请求-解决用例间依赖问题(17)

    最最重要,处理case依赖.字段依赖 # -*- coding: utf-8 -*- # @Time : 2020/2/13 21:14 # @File : data_depend_17.py # @ ...

  5. 接口测试-chap2-关于重定向

    重定向: 301:资源永久转移 302:资源暂时转移到另一个地址了 1.如果请求接口时发生了重定向,python会自动跟随重定向,对重定向地址发起请求,最后只能得到重定向地址的响应结果.而看不到重定向 ...

  6. 吴裕雄--天生自然python学习笔记:Python3 MySQL 数据库连接 - PyMySQL 驱动

    什么是 PyMySQL? PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb. PyMySQL 遵循 Python 数据库 AP ...

  7. 在shell下执行命令的方法

    在shell下执行命令的方法 1. #!/bin/sh 语法:在shell.sh的开头写入 #!/bin/sh 一般的shell脚本就是这种用法.这种方法调用脚本开头的shell执行命令,子shell ...

  8. Proxmox如何进入单人维护模式(重置root密码)

    官网连接:https://pve.proxmox.com/wiki/Root_Password_Reset Root Password Reset     Contents [hide] 1Reset ...

  9. haproxy笔记之二:HAProxy简介

    HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持 ...

  10. linux系统下rpm包的安装、删除、效验、查询

    详细课程 使用 RPM RPM 有五个基本的操作 模式(不包括包的编译): 安装,卸载,升级,查询,校验.本节将对它们一一介绍.要了解完整的细节和选项,可以使用 rpm --help, 或转到 the ...