范围判断是什么
所谓范围判断,有时也叫区间判断,指判断某个值是否在一定的范围内,就像下面图片里,10到30之间。
举一个例子:有些游戏里,如果进度条刚好可以停留在某个范围内,就可以得到最高的分数:
在工厂里,所有的零件都有误差,只有误差在一定的范围内,才会被认为是合格的零件。实际加工出来的零件与设计要求给定的理想值之间的差值我们称为误差。但是零件是不可能没有误差的,所以在设计零件的时候,会允许零件的尺寸在一定的范围内变动。这个设计时候就允许的范围,就是公差。比如下面图片里圈起来的地方。
范围判断在生活、工作中的应用非常广泛。
Python中的范围判断
Python里做范围判断非常方便。比如一个变量a,其值的范围应该在10~30之间(不包括10和30),这种情况,代码就可以写成:
注意这种写法在C++里是不允许的。
范围判断比较好理解,我们这里要讲的是,Python中多个数值连续判断的情况。
比如有三个变量,a、b、c,我们现在要判断这三个变量是不是都在10~30的范围内,且依次递增。我们先看代码:
输出的结果是True,这说明表达式是成立的。
写到这里,是希望同学们知道,遇到大小依次递增或递减的时候,可以使用连续的判断。但是遇到非连续递增或递减的关系时,请老老实实地用and和or。
我们再看下面的代码:
这段代码里,a、b、c的值已经不构成递增关系。我们把c和b的判断写在了30后面,这个输出依然是True,说明判断成立。其实这个时候,c和b的大小与a已经没有关系了。
C++的范围判断
C++里,连续判断的写法是不可取的。C++不识别连续判断,我们来看一个例子:
大家觉得这段代码的输出结果是什么呢?不忙说结果,我们先来看看代码执行的时候,C++是如果对a<b<c这个表达式做判断的:
第一步,C++会先进行a<b的判断,即11<12,其结果为true,。
第二步,再进行true<c的判断。true的值在计算机中是1,也就是1<c,成立,所以结果又为true。
最终的结果为true,判断成立。这就和我们预期的递增判断不一样。
所以学C++的同学,请务必记住,C++中不存在连续判断,想要判断范围,就要写成:
注意范围判断的判断词
在做范围判断的分析时,有的题目会给出是否包含范围的左右两个极值的说明。比如请判断是否在10~30(不包含10和30)的范围内。但是有的题目可能会这么说:不小于10并且不超过30。这个时候,判断要怎么写呢?
不小于要用>=,不超过要用<=,用C++写出来就是: