华为仓颉语言入门(5):条件测试
解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界
在编程中,条件表达式其实是一个布尔值表达式,其结果只有 true
或 false
。通过测试条件是否为 true
,程序可以确定是否执行相应的代码逻辑。
数值类型数据的大小比较
在许多编程场景中,我们需要比较数值类型的数据。仓颉语言提供了以下常见的关系操作符用于大小比较:
<
(小于)<=
(小于等于)>
(大于)>=
(大于等于)
这些操作符在表达式中是二元的,即它们作用于两个操作数,返回一个布尔值。操作数必须为相同类型,计算结果为布尔类型。如果操作数 A
和 B
的实际关系符合操作符的定义,则结果为 true
,否则为 false
。
例如:
9 > 8 // 结果为 true
9 < 8 // 结果为 false
6 <= 6 // 结果为 true
这里需要注意,所有的关系操作符 (<
, <=
, >
, >=
) 具有相同的优先级。
是否相等的测试
相等测试是编程中常见的操作。仓颉语言提供了以下操作符进行相等测试:
==
(相等)!=
(不等)
例如:
3 == 5 // 结果为 false
3 != 5 // 结果为 true
和大小比较操作符一样,==
和 !=
操作符也返回布尔值。其优先级高于关系操作符(<
,<=
,>
,>=
)。
大小写敏感比较
在比较字符串时,仓颉语言默认情况下区分大小写。只有字符串完全相同时,比较结果才会返回 true
。
例如:
var name = "Albert"
println(name == "albert") // 输出: false
println(name == "Albert") // 输出: true
避免浮点数比较误差
由于浮点数的精度问题,直接用浮点数进行相等判断可能导致误差,因此在判断浮点数相等时,应使用误差范围判断法。
不推荐的做法:
println(0.4 - 0.1 == 0.3) // 结果为 false
推荐的做法是比较两个数值的差值是否在某个足够小的范围内。具体实现如下:
from std import math.abs // 导入标准库中的数学函数main() {println(abs(0.4 - 0.1 - 0.3) <= 1e-6) // 输出: true
}
复杂条件的检查
在某些情况下,我们需要检查多个条件,逻辑运算符 &&
(与)、||
(或)、!
(非) 可以帮助我们表达复杂的逻辑。其优先级顺序为 !
高于 &&
,&&
高于 ||
。
例如,假设有三个变量:
age
表示年龄(Int64 类型)height
表示身高(Float64 类型)isHealthy
表示是否健康(Bool 类型,true
表示健康)
若要表达身高在 1.2 米(含)至 1.5 米之间的条件:
height > 1.2 && height <= 1.5
如果我们还需要添加多个条件,比如“年龄小于 18 且身高大于等于 1.2 米”,则可以使用逻辑与操作符:
age < 18 && height >= 1.2
同样,如果我们需要测试多个条件,只要至少满足其中一个条件即可,可以使用逻辑或操作符:
age < 18 || height > 55 || !isHealthy
以上表达式表示的意思是:“年龄小于 18 岁,或年龄大于 55 岁,或身体不健康”,如果其中任意一个条件为 true
,整个表达式将返回 true
。
逻辑表达式的优化
当条件表达式变得较为复杂时,我们可以通过适当添加括号提高其可读性,并明确表达式的逻辑顺序。
例如:
age < 18 || (age > 55 && !isHealthy)
这种写法不仅提高了代码的可读性,还能避免因逻辑优先级引起的混淆。编写逻辑表达式时,合理使用逻辑运算符 &&
和 ||
是非常重要的。
逻辑运算
在程序中,逻辑运算符 &&
(逻辑与)、||
(逻辑或)和 !
(逻辑非)用于组合多个条件表达式。它们返回布尔值并可以构建更复杂的逻辑表达式。
逻辑非 (!
) 运算符的优先级最高,之后是逻辑与 (&&
),最后是逻辑或 (||
)。这意味着当多个逻辑运算符同时出现在表达式中时,逻辑非将首先执行,接下来是逻辑与,最后是逻辑或。
逻辑非的运算规则
逻辑非操作符仅作用于一个操作数,并取反该操作数的布尔值。例如:
A | !A |
---|---|
true | false |
false | true |
逻辑与和逻辑或的运算规则
逻辑与和逻辑或操作符是二元的,分别作用于两个布尔值。对于逻辑与 (&&
),只有两个操作数都为 true
时结果才为 true
;对于逻辑或 (||
),只要任意一个操作数为 true
,结果即为 true
。以下是逻辑与和逻辑或的计算规则:
A | B | A && B | A || B |
---|---|---|---|
true | true | true | true |
true | false | false | true |
false | true | false | true |
false | false | false | false |
此表展示了逻辑与 (&&
) 和逻辑或 (||
) 的运算规则。当使用逻辑与运算时,只有两个操作数都为 true
时,结果为 true
。而在逻辑或运算中,只要有一个操作数为 true
,结果即为 true
。
例子
假设我们有三个变量:
age
表示年龄(Int64 类型)height
表示身高(Float64 类型)isHealthy
表示健康状况(Bool 类型,true
代表健康)
我们可以使用逻辑运算符来表达复杂条件。例如,表达一个人在 1.2 米到 1.5 米之间的身高限制,可以写成:
height > 1.2 && height <= 1.5
此表达式表示“身高大于 1.2 米并且小于等于 1.5 米”的条件。当需要满足多个条件时,可以用逻辑与 (&&
) 来连接。
例如,“年龄小于 18 且身高大于 1.2 米”:
age < 18 && height >= 1.2
如果我们想表示一个人的年龄小于 18 岁,或大于 55 岁,或身体状况不健康,则可以使用逻辑或 (||
) 运算符:
age < 18 || age > 55 || !isHealthy
这个表达式表示:只要年龄小于 18 岁,或者年龄大于 55 岁,或者身体状况不健康,条件为真。