python中所有数值都可以准确比较是否相等_在python里,禁用== = = 以及is和in,如何判断两个数字的值是否相等?...
根据题主要求:
写两个函数,不用“== >= <= > < 以及is和in”比较两数,同则True,异则False
答案如下:
def Judge1(a,b):
return not a-b
还有:
def Judge2(a,b):
return not a^b
看起来这两个函数像是一样的对吧?
其实他们的原理也可以说一样但又不太一样。
先把这俩代码丢进运行环境内走一走看看能不能得到要的答案:
Judge1:
同则True,异则False
善!
Judge2:
满足要求~
那么接下来解释为什么说原理一样又不大一样:
原理:
「^」和「-」都属于运算符,但前者是位运算符,后者是算术运算符,他们运算的结果均是一个数值。
那么问题的关键就在这里啦,为什么结果是数值,但是在输出的时候却会变成了True和False的布尔值呢?
这就是上面两个函数都用到的一个原理:这是因为在Python中,任何非0,非None(空值)的表达式,均可表示True(真,1)的意思。
因此在两者的运算中,只要运算结果不等于0,均可当成True,然后在not(非)的作用下,变成False
因此看Judge1,返回的值是not a-b
显然,如果两个数相同,那么a-b的值将会等于0,如果不同,那无论是正数还是负数,都不会等于0:把not去掉,便可得到原来的数值结果
如此便能得到想要的结果了。
那么「^」?减号还好说小学数学都懂,那这个位运算符是个什么东西?
我们可以在实践中了解到它:
我们让程序运算了三组值(1,3)(3,1)(9,3)
前两组值无论位置如何,结果均相同。
这是因为「^」运算符是属于位运算符,名叫按位异或运算符。
这名老长老高大上了,看着就让人糊涂。
异或——如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。
就像这样,如果a,b两个值相同,那么异或结果等于0。
那为什么不同的数并没有得到上面所说的结果1呢?
这是因为“按位”两个字,完整来说按位异或运算符是一个二进制运算,而这个按位,就是按二进制中的每一位进行运算,其运算过程如下:
如果是数(1,3),对应的二进制数为(01,11)
按位一个地进行异或运算第一个0和1,不同,则返回第一位 1
第二个1和1,相同,则返回第二位 0
得到结果(10)
对应的十进制数就是2
因此得到的结果是2,而无论如何调换两数的位置,结果也都会是2。
再来一个例子强化一下:
(9,3)——(1001,11)因为要按位运算,所以得补上0:(1001,0011)
那么按位异或运算,得到结果是……
(1010)——10
那么这就是二进制的按位异或运算啦。
根据以上所学,我们就可以知道,如果a^b,两数相同,则会返回0,如果不同,则一定不会是0,就像a-b一样,因此在作为表达式的时候就一定能得到布尔值True。
最后再放一遍本题的答案:
def Judge1(a,b):
return not a-b
和
def Judge2(a,b):
return not a^b
今天重点讲了非空即True的原理和位运算的原理,希望能对阅读到本答案的读者有用,如果你们觉得本答案给予了一定的帮助,麻烦点个赞/感谢/关注哦~谢谢啦!
python中所有数值都可以准确比较是否相等_在python里,禁用== = = 以及is和in,如何判断两个数字的值是否相等?...相关推荐
- python中的序列类型数据结构元素的切片操作_浅析python中的分片与截断序列
浅析python中的分片与截断序列 序列概念 在分片规则里list.tuple.str(字符串)都可以称为序列,都可以按规则进行切片操作 切片操作 注意切片的下标0代表顺序的第一个元素,-1代表倒序的 ...
- 关于python中的复数、下列说法正确的是_关于Python中的复数,下列说法正确的是?...
关于Python中的复数,下列说法正确的是? 答:表示复数的语法是real + image j 实部和虚部都是浮点数 方法conjugate返回复数的共轭复数 中国大学MOOC: 依据年龄和死亡率之间 ...
- 在python中、实例变量在类的内部通过_【python】类变量、实例变量
1.类变量.实例变量概念 类变量: 类变量就是定义在类中,但是在函数体之外的变量.通常不使用self.变量名赋值的变量.类变量通常不作为类的实例变量的,类变量对于所有实例化的对象中是公用的. 实例变量 ...
- python中一个字符视为长度为1的字符串_【Python】笔试题知识点小结(1)
题目来源:牛客网 今天开始复习巩固一下基础知识点- 蓝色表示题干,红色表示答案,黑色表示知识点. 1.下列代码的运行结果是? print 'a' < 'b' < 'c'True 1)pyt ...
- python中plot和bar要求的格式不一样_在Python中matplotlib中匹配的图形大小,包括和不包含make_axes_locatable- divider colorbars...
我在2×2网格中有4个图形,但只希望右边的两个图形有条形(比例适用于行).我正在使用表格 divider = make_axes_locatable(ax) cax = divider.append_ ...
- python中的字体设置,pythontkinter设置界面字体样式_修改Python Tkinter中的默认字体...
我正在使用Tkinter在Python2.7中开发GUI,但我遇到了一个烦人的问题. 我想定义所有小部件使用的默认字体,如果可能的话,请在一行中定义.此行仅修改Entry或ComboBox中使用的字体 ...
- Python中的数值类型
Python中的数值类型 Python中的数值是Python中常用的数据类型之一,接下来向大家介绍一下Python中数的使用. Python中数分为三种:int(整数),float(浮点数),comp ...
- python中一切数据都是对象吗_python中的深拷贝(deepcopy)和浅拷贝(copy)
前言 在很多语言中都存在深浅拷贝两种拷贝数据的方式,Python中也不例外.本文中详细介绍了Python中的深浅拷贝的相关知识,文章的内容包含: 对象.数据类型.引用 赋值 浅拷贝 深拷贝 一.Pyt ...
- python中一切内容都可以称为_创业基础答案黑龙江大学
[单选题]成人麻醉前什么时间禁食水最合适 A. 禁食14h,禁水6h B. 禁食12h,禁水4h C. 禁食10h,禁水2h D. 禁食8h,禁水1h E. 禁食6h,禁水30min [多选题]木材的 ...
最新文章
- pandas.io.data 获得金融数据失败
- 积跬步,聚小流------Bootstrap学习记录(2)
- 转:ESRI矢量数据格式简介
- CentOS重新加载网卡报错 Active connection path: /org/freedesktop/NetworkManager/ActiveConnection/23
- IBASE handle free after save - buffer table cleared
- 操作系统学习笔记-2.1.5线程概念和多线程模型
- arima模型 p q d 确定_自回归移动平均模型(ARMA)
- (13)<datalist> 标签
- “Python小屋”编程比赛参赛与领奖方式
- 信用评分卡 (part 2of 7)
- Java去除使用富文本编辑器时自动生成的标签
- 最全可编辑世界地图中国地图素材
- Vue 单文件模板中覆盖引入库 CSS 样式
- 系统结构考点之CRAY-1向量处理机
- Containerd shim 原理深入解读
- 十门峡旅游攻略:临安十门峡的春天
- python+opencv将图片转换成视频
- 无处不在的内存泄漏-苹果BUG?
- UNIX Time Sharing System - UNIX分时系统翻译
- KSO-2022年2月份PYPL编程语言排行榜
热门文章
- 北大、清华计算机课程资源集
- 干货:手把手教你在音频分类DCASE2017比赛中夺冠
- ifen.os x pe.dmg天翼云_3.3K屏显纵览天下 11代酷睿横行职场 华硕灵耀X纵横值得选择...
- idea如何将web项目打成war包maven和非maven
- axure 浏览器插件_7款超级实用的谷歌浏览器插件
- python执行mysql存储过程_Mysql学习---使用Python执行存储过程
- python打印所有的水仙花数_python使用循环打印所有三位数水仙花数的实例
- sed 之简单用法小记
- vue实现增删改查功能
- 主席树初探--BZOJ1901: Zju2112 Dynamic Rankings