华为仓颉语言入门(5):条件测试

解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界

在编程中,条件表达式其实是一个布尔值表达式,其结果只有 truefalse。通过测试条件是否为 true,程序可以确定是否执行相应的代码逻辑。

数值类型数据的大小比较

在许多编程场景中,我们需要比较数值类型的数据。仓颉语言提供了以下常见的关系操作符用于大小比较:

  • < (小于)
  • <= (小于等于)
  • > (大于)
  • >= (大于等于)

这些操作符在表达式中是二元的,即它们作用于两个操作数,返回一个布尔值。操作数必须为相同类型,计算结果为布尔类型。如果操作数 AB 的实际关系符合操作符的定义,则结果为 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
truefalse
falsetrue
逻辑与和逻辑或的运算规则

逻辑与和逻辑或操作符是二元的,分别作用于两个布尔值。对于逻辑与 (&&),只有两个操作数都为 true 时结果才为 true;对于逻辑或 (||),只要任意一个操作数为 true,结果即为 true。以下是逻辑与和逻辑或的计算规则:

ABA && BA || B
truetruetruetrue
truefalsefalsetrue
falsetruefalsetrue
falsefalsefalsefalse

此表展示了逻辑与 (&&) 和逻辑或 (||) 的运算规则。当使用逻辑与运算时,只有两个操作数都为 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 岁,或者身体状况不健康,条件为真。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值