当前位置: 首页 > news >正文

17. Python 逻辑运算

17. 逻辑运算

文章目录

  • 17. 逻辑运算
    • 1. 什么是逻辑运算
    • 2. and-逻辑与运算
    • 3. or-逻辑或运算
    • 4. not-逻辑非
    • 5. 逻辑运算符的优先级
    • 6. 总结
    • 7. 课后练习

1. 什么是逻辑运算

在布尔类型章节我们说过数学家乔治.布尔在符号逻辑运算中做出过特殊贡献,很多计算机语言中将逻辑运算称为布尔运算,并将其结果称为布尔值。

那什么是逻辑运算呢?

举例说明:假设18周岁以上并且70周岁以下的公民可以报考驾照。

那报考驾照需要同时满足2个条件:
一是age >= 18
二是age <= 70

【定义】

类似这样的,对多个条件进行判断的运算就叫逻辑运算。

【返回值】

逻辑运算的结果是布尔类型的数据,即True或False。

【3种逻辑运算符】

  1. and(并且)
  2. or(或者)
  3. not(非)

在这里插入图片描述

【备注】上述图片来自夜曲编程。

【计算顺序】

逻辑运算也是一种数学运算,只要是数学运算就有计算顺序。
例如我们常用的先乘除后加减就是一种计算顺序。

在逻辑运算中,优先计算逻辑运算符左右两边的表达式,然后再进行逻辑运算。

2. and-逻辑与运算

【含义】

and运算符表示“并且”的意思。

【运算规则】

只有and左右两边的布尔值均为True时,运算结果才为True。
其它情况下,运算结果都为False。

【语法提示】

逻辑运算符and前后均需要有一个空格

【记忆口诀】

两个为真才为真。

【代码示例】

print(True  and True)
print(True  and False)
print(False and True)
print(False and False)

【终端输出】

True
False
False
False

观察输出结果,发现在进行逻辑与计算时,只有运算符左右两边的布尔值都为True,结果才为True。

【课堂练习】

猜一猜下面的代码的运行结果:

print(2>0 and 5>0)
print(2>0 and 5<0)
print(2<0 and 5>0)
print(2<0 and 5<0)

【终端输出】

True
False
False
False

【答案解析】

在逻辑运算中,优先计算逻辑运算符左右两边的表达式,然后再进行逻辑运算。
因此我们要先计算大于和小于的比较运算。

  1. 先计算左边两边的表达式

第一行代码中:
左边表达式 2 > 0成立,布尔值为True。
右边表达式 5 > 0成立,布尔值为True。

  1. 再进行逻辑运算

True and True ,左右两边都为真,则第一行代码逻辑运算结果为True。

在逻辑与计算中,只有两边的值都为True,结果才为True。

在这里插入图片描述

3. or-逻辑或运算

【含义】

or运算符表示“或者”的意思。

【运算规则】

只有or左右两边的布尔值均为False时,运算结果才为False。
其他情况下运算结果就为True。

【语法提示】

逻辑运算符or前后均需要有一个空格

【记忆口诀】

两个为假才为假。

【代码示例】

print(True  or True)
print(True  or False)
print(False or True)
print(False or False)

【终端输出】

True
True
True
False

观察输出结果,发现在进行逻辑或计算时,只有运算符左右两边的布尔值都为False,结果才为False。

【课堂练习】

print(2>0 or 5>0)
print(2>0 or 5<0)
print(2<0 or 5>0)
print(2<0 or 5<0)

【终端输出】

True
True
True
False

【答案解析】

在逻辑运算中,优先计算逻辑运算符左右两边的表达式,然后再进行逻辑运算。
因此我们要先计算大于和小于的比较运算。

  1. 先计算左边两边的表达式

第一行代码中:
左边表达式 2 > 0成立,布尔值为True。
右边表达式 5 > 0成立,布尔值为True。

  1. 再进行逻辑运算

True or True ,左右两边都为真,则第一行代码逻辑运算结果为False。
在逻辑与或计算中,只有两边的值都为False,结果才为False。

在这里插入图片描述

4. not-逻辑非

【含义】

not运算符表示“非”的意思。

【运算规则】

not运算符只运算一个布尔值,表示取这个布尔值的反值。

not True 运行结果是False。
not False运行结果是True。

【语法提示】

逻辑运算符not后需要有一个空格

【代码示例】

print(not True)
print(not False)

【终端输出】

False
True

进行逻辑非的计算时,运算符右边的布尔值为True,则输出结果为false,右边的布尔值为false,则输出结果为True。

5. 逻辑运算符的优先级

1.比较运算符优先于逻辑运算符。
2.逻辑运算符中not >and >or,即先计算not,再计算and,最后计算or

【体验代码】

print ( True or True  and  False  != True )

【终端输出】

True

在这里插入图片描述

6. 总结

在这里插入图片描述

7. 课后练习

  1. 编写代码:定义变量a = 5, 输出“a大于0或者a小于0”的布尔值:

【参考答案】

a = 5 
print(a>0 or a<0)

【终端输出】

True
  1. 编写代码:小明今年15岁,用逻辑运算判断小明今年能否学驾照:

【参考答案】

age = 15 
print(age >= 17 and age <= 70)

【终端输出】

False
  1. 以下哪一个选项运算的结果是False?

A. not (5 == 1)
B. not (5 != 1)
C. not (5 < 1)

【参考答案】B

相关文章:

  • 2_velocyto.R包 docker容器的安装 使用docker来安装velocyto
  • 1-使用华为云的ubuntu系统安装docker Linux安装docker安装 国内安装有时候很慢 最好翻墙安装
  • 18. Python input( )输入函数
  • 19. input( )输入函数课后练习
  • Ubuntu 安装 conda
  • 20. 控制流及单分支结构if语句
  • 21. python if else 条件判断语句
  • 22. if...elif...else 多向判断
  • ubuntu 命令行提示符 颜色
  • ubuntu 中的git 如何下载具体的reposotory github desktop桌面应用
  • 如何5秒解决PyCharm下Django项目执行之后出现TypeError: 'os.stat_result' object is not callable的问题
  • 使用当前目录的 Dockerfile 创建镜像 docker build使用dockerfile创建docker镜像
  • 推荐:学习人工智能(AI)的一些网站及教程资源
  • ubuntu linux后台的程序哪些正在运行
  • 超详细的GO语言windows系统开发环境的搭建及其项目的创建(2019年8月25日更新)
  • egg(89)--egg之redis的发布和订阅
  • JavaScript中的对象个人分享
  • JAVA并发编程--1.基础概念
  • Linux Process Manage
  • Netty+SpringBoot+FastDFS+Html5实现聊天App(六)
  • python学习笔记-类对象的信息
  • RxJS 实现摩斯密码(Morse) 【内附脑图】
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • 构建二叉树进行数值数组的去重及优化
  • 关于extract.autodesk.io的一些说明
  • 极限编程 (Extreme Programming) - 发布计划 (Release Planning)
  • 开发基于以太坊智能合约的DApp
  • 面试总结JavaScript篇
  • 使用 Docker 部署 Spring Boot项目
  • 最近的计划
  • 【运维趟坑回忆录 开篇】初入初创, 一脸懵
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • python最赚钱的4个方向,你最心动的是哪个?
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • ###STL(标准模板库)
  • #define与typedef区别
  • #if #elif #endif
  • (Java数据结构)ArrayList
  • (TOJ2804)Even? Odd?
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • .NET Core引入性能分析引导优化
  • .net mvc部分视图
  • .Net 应用中使用dot trace进行性能诊断
  • .net6+aspose.words导出word并转pdf
  • :O)修改linux硬件时间
  • @RequestBody与@ResponseBody的使用
  • @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
  • [ 转载 ] SharePoint 资料
  • [].slice.call()将类数组转化为真正的数组
  • [2008][note]腔内级联拉曼发射的,二极管泵浦多频调Q laser——
  • [ACTF2020 新生赛]Upload 1
  • [Android]如何调试Native memory crash issue