我们还是接着上一关的while循环讲起,还记得while循环怎么写吧?

之前说到,while循环是需要有一个“条件”的,当条件被满足,才能开启循环。

在上面这个小例题中,这一点不难理解:我先定义了变量a,然后将0赋值给a;接下来,面对a<5这个条件,计算机就会判断条件满足,用术语来说就是条件为【真】(True),然后开启循环。

直到a+1不断执行,到了a=5时,条件a<5不再满足,即条件为【假】(False),这段循环就结束了。

真真假假,计算机是怎么做出这样的判断的呢?简单的数学题倒是一看便知,但当逻辑更复杂的时候,计算机怎么决定自己要不要进行下一步行动呢?比如下面这道小题:

我猜你的表情大概是ヾ(。ꏿ﹏ꏿ)ノ゙这样的。没事,很快你就能秒懂了,先不理它。

要看懂这种奇怪的条件判断,就要熟悉一个编程基础知识:布尔值。

用数据做判断:布尔值

之前我们提到,计算机利用数据有三种方式:1.直接使用数据,2.计算和加工数据,3.用数据做判断。

除了while循环,我之前学过的if...elif...else语句,也涉及到【利用数据用做逻辑判断】。当逻辑判断通过才会继续执行:

当然,if和while有个显著的区别。那就是if语句只会执行一次,而while是循环语句,只要条件判断为真,就一直循环执行。

这个“判断”的过程,在计算机的世界里是如何发生的呢?

计算机的逻辑判断,只有两种结果,就是True(英文意思是“真”)和False(英文意思是“假”),没有灰色地带。这个计算真假的过程,叫做【布尔运算】。

TrueFalse,也就叫做【布尔值】。

举个例子,请你运行以下代码,看看结果是True还是False:

print()括号内的计算其实就是【布尔运算】。终端上出现的True和False我们称为【布尔值】。

第1行和第2行代码很简单啦。我们看后面两行:两个字符串'长安'相等,结果正确,所以打印为True。而字符串'长安'和字符串'金陵'做比较,结果不相等,!=代表不等号,结果正确,打印为True。

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

好,现在我们来体验一下上面出现过的这段奇怪的代码,你会发现它执行后,终端上不显示任何结果:

这是因为while循环执行,必须要while后的条件为“真”,而【布尔值】False本身就是“假”,所以这个循环一次都没运行就结束了。

同理,3>5这个条件恒为“假”,如果把while False换成while 3>5,效果会是一样的——什么都不会出现。

时候可能就有人会问了:“那如果我用while True或者while 3<5来做条件,会怎么样?”

我们就来体验一下。先剧透:请注意,这段代码将会无限运行,陷入【死循环】,你需要在键盘上按几次【ctrl+c】来强制结束运行。

这是因为【布尔值】True直接把条件判断的结果设置为真,也就是条件永远正确。所以代码会无限循环,必须手动强制退出。

【布尔值】对条件判断语句有一样的效果:

我们会发现,只有if True成功运行,将结果显示在了屏幕上。当然,if语句不会陷入死循环。

做一个总结:

现在我们知道了什么是布尔运算以及布尔值的作用,我们接着学习【布尔运算】的三种方式。其中的第一种,就是作比较。

1.两个数值做比较

其实刚才我们print(3>5),计算机会先做一次布尔运算,判断3是否大于5,然后再把判断的结果以【布尔值】的方式打印出来。

用两个数值做比较的【布尔运算】,主要包含以下情况:

主要记住前两种==!=,这两种在条件判断中用得非常多。还有大于>和小于<了,这都属于数学常识了。

另外,特别提醒大家一点:在代码中,A == B表示A和B相等,==表示相等关系;而=表示给变量赋值。===虽然长得相似,但没有任何关系。

对于===,初学者很容易混淆写错,导致报错。请你来修改一下下面的代码,让它能正确运行:

我们接着看布尔运算的第二种方式:直接用数值做运算。

2.直接用数值做运算

请看这段代码:

是不是觉得怪怪的,没关系,我们来运行一下,看终端会给我们一个啥样的结果。

终端打印出了一个字符串熊猫。我们看看这两行代码,这是一段使用了条件判断的代码。因为终端打印出了'熊猫',说明 if 后面的条件为真。

可是怪就怪在,if后面接的不像是一个“条件”,而是一个数字。

其实,整数1在这里就是作为一个条件,被判断为真(True)。这就是数值本身作为一个条件,被判断真假的情况。

那为什么可以这样操作呢?

因为在Python中已经设定好什么数据为真,什么为假。假的是有限的,那么除了假的,就都是真的。请看下图:

这个表的左侧一列,它们在Python中被判定为假,比如False0''(空字符串)等等。假的东西是有限的,那么除了假的,其他就都是真的。比如上一个例子中出现的整数1,就是真的。

至于None,它代表的是【空值】,自成一派,数据类型是NoneType。要注意它和0的区别,0整数0,可并非什么都没有。

好,现在请看这段代码,然后回答问题:请问执行这段程序时,终端会显示什么?

'开心'这个字符串作为一个条件时,被判定为真,所以if后面的条件满足,计算机会执行if的下一行代码;而 ''(空字符串)本身作为一个条件时,被判定为假,if后面的条件为假,计算机不会执行if的下一行代码。

我们可以使用bool()函数来查看一个数据会被判断为真还是假。这个函数的用法与type()函数相似(还有印象吧~),在bool()函数括号中放入我们想要判断真假的数据,然后print出来即可。

我们来做个试验,用bool()函数把前面我们提到的各种数据都放进去判断一下,打印出来看看。请阅读代码后再直接运行:

好啦,现在你明白了“直接用数值做布尔运算”是怎么一回事,再来看看第三种情况。

3.布尔值之间的运算

会接触到andornotinnot in五种运算。

还是用例子来说明吧。我们先看看【and】和【or】。请先阅读代码,然后直接运行:

a==1 and b==1的意思是【a=1并且b=1】,要两个条件都满足,才能判断为True,而a==1 or b==1的意思是【a=1或者b=1】,只要两个条件满足一个,就能判断为True。

这里把and和or的计算逻辑和大家做一个总结:

接下来我们看看【not】运算。这个运算很简单,表示翻转的意思。not True就等于Falsenot False就等于True

最后,我们讲一下【in】和【not in】两种运算。

【in】的意思是“判断一个元素是否在一堆数据之中”,【not in】反之。这个超简单的。

你用肉眼就能判断a,b,c三个变量在不在(in或是not in)列表list里面了对吧?来简单运行一个试试呗。

如果涉及到的数据集合是字典的话,【in】和【not in】就可以用来判断字典中是否存在某个【键】:

到这里,我们学完了5种布尔值的运算方式,不难,就是有点多~

老样子,做个总结吧~

掌握了布尔值,以后我们可以写出更加简洁的while循环。

比如说,上节课用while循环重复执行100遍任务,代码会这样写:

今天理解布尔运算原理后,可以把这段代码改造成更“程序员”的方式:

第二种方式对计算机来说是更简单的,因为计算次数减少了(减少了计算i<100,i<99……这个过程),这也是程序员在写代码时的思考方式。

我们以后还会经常看到布尔运算和布尔值在代码中的运用,今天对布尔值的讲解就到这里。

----------------------------------------------------------------------------------------------

更多Pthon课程请扫码关注

gridview怎么判断两行字符串是否相等_Python语言难学吗?第13讲——用数据做判断:布尔值...相关推荐

  1. python集合类型的操作符_Python 语言学习 第一篇:数据类型(数字,集合,布尔类型,操作符)...

    Python语言最常用的对象是变量和常量,常量的值是字面意思,变量的值是可变的,例如,123,"上海"是常量,而a=1,a=2,其中a是变量名.内置的核心数据类型有:数字.字符串. ...

  2. python提取包含特定字符串的行_python语言----txt中搜索特定字符串所在行

    打开IDLE(python),并新创建一个py文件,编辑内容为: '''本示例演示如何在一个txt文件中搜索特定的字符串,并将其行显示''''''# 1. 打开文件# 2. 读取行信息# 3. 判断是 ...

  3. python简单命令语句_Python语言----linux常用命令(13)

    归档和压缩的概念 压缩也是一种打包,压缩的原理是将文件中相同的信息用一个字符代替,致使文件体积变小达到压缩的目的,压缩对于文本类或数据类文件有较明显的作用. 归档就是将一些文件放在一起变成一个包,便于 ...

  4. python判断ip地址是否合法_python实现判断一个字符串是否是合法IP地址的示例

    一个刚结束的笔试题目,简单贴一下吧,下面是具体实现: #!usr/bin/env python #encoding:utf-8 ''' __Author__:沂水寒城 功能:判断一个字符串是否是合法I ...

  5. python字符串的表示_Python字符串方法总结

    Python字符串方法图示: (温馨提示:对图片点右键--在新标签页中打开图片) 1.index() 定义:查找并返回指定str的索引位置,如果没找到则会抛异常(查找的顺序是从左至右)可以指定范围:开 ...

  6. aspx 判断字符串是否为decimal_python实现判断一个字符串是否是合法IP地址

    一个刚结束的笔试题目,简单贴一下吧,下面是具体实现: #!usr/bin/env python#encoding:utf-8 '''__Author__:沂水寒城功能:判断一个字符串是否是合法IP地址 ...

  7. 判断一个字符串是否为空(null)或者是空字符串(“”)的方法总结

    第一步:理解null和""的区别 null表示这个字符串在栈中没有被实例化,没有任何指向,因此在堆中没有分配内存空间.如果要调用这个字符串的方法会出现空指针异常 `String s ...

  8. python语言的数据类型有哪些_Python语言有哪些数据类型

    在Python中,能够直接处理的数据类型有以下几种: 一.整数 Python可以处理任意大小的整数,当然包括负整数,在Python程序中,整数的表示方法和数学上的写法一模一样,例如:1,100,-80 ...

  9. python如何判断字符串是否包含某些汉字_Python如何判断一个字符串是否包含指定子字符串...

    Python如何判断一个字符串是否包含指定字符串?本篇文章就给大家介绍Python判断一个字符串是否包含指定子串的3种方法.有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助. 程序员在字 ...

  10. python字符串是否包含某元素_Python实现判断一个字符串是否包含子串的方法总结...

    本文实例总结了Python实现判断一个字符串是否包含子串的方法.分享给大家供大家参考,具体如下: 1.使用成员操作符 in >>> s='nihao,shijie' >> ...

最新文章

  1. 5 亿微博数据疑泄露,Python 爬虫如何避免踩天坑?
  2. J20170521-ts
  3. tf.train.MomentumOptimizer()优化器
  4. 在Oracle 11g中用看Oracle的共享内存段---------IPCS
  5. Java里try catch的简单用法
  6. 群论及Polya计数定理题目入门
  7. java string补空格_Java String字符串补0或空格详解
  8. mysql子查询总分最高的学生_mysql高级内容
  9. 技校考大专单招计算机考试,高职单招题简单吗 单招一般考什么科目
  10. 版本控制系统(SVN,Git)与项目托管平台(Github,Gitee,Coding)
  11. c++中map的基本函数
  12. java工具类(六)根据经纬度计算距离
  13. Java学习到什么程度可以找第一份工作?
  14. PHP代码审计入门学习过程
  15. 著名的十大经济学效应
  16. component lists rendered with v-for should have explicit keys.
  17. 企业微信之发送应用消息案例
  18. 【技巧分享】股票代码规则
  19. 2018运动场景内运动检测调研文章
  20. H265摄像头如何实现网页直播

热门文章

  1. Too many authentication failures for
  2. 《C语言及程序设计》实践参考——找数字
  3. SharePoint 2013技巧分享系列 - 隐藏Blog和Apps左侧导航菜单
  4. linux网络客户端命令
  5. 18. RSS订阅(RSS Feeds)and price rule
  6. 5. http://kb.cnblogs.com/page/90838/
  7. 3. jQuery 选择器
  8. 用jquery在一个页面加载另一个页面
  9. WCF 入门调用实例教程
  10. NIO Channel Scatter/Gather 管道Pipe类