当前位置: 首页 > news >正文

华为仓颉语言入门(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 岁,或者身体状况不健康,条件为真。


http://www.mrgr.cn/news/37395.html

相关文章:

  • 新手如何学习OpenStack?
  • QT-GUI(1)- QPushButton-QLabel-QTreeWidget-QTableWidget
  • 数据科学 - 字符文本处理
  • Python报错已解决】 ModuleNotFoundError: No module named ‘openpyxl‘
  • 第二百五十五节 JPA教程 - JPA 多对多连接表示例
  • 数学符号练习篇-函数
  • PostgreSQL 17 发布了!非常稳定的版本
  • 今年双十一不被割韭菜!要买就要高品质好物~总结五款好物推荐!
  • HCIP——HCIA回顾
  • 26 基于STM32的智能门禁系统(指纹、蓝牙、刷卡、OLED、电机)
  • 【JavaScript】encodeURI 和 decodeURI
  • 生成速度提升70%,32K版本上新,讯飞星火API全新升级!
  • 【通知】“长三角档案数字资源长期保存与数据安全治理”专题培训
  • 【黑马软件测试一、二】软件测试基础与Linux、数据库
  • 顶象滑块、顶象验证码就这?2024-09-27 最新版(持续更新)确定不点进来看看?
  • 2万字长文助你快速入门AIGC:包含底层原理、应用场景、热门工具、行业现状…
  • 详解JavaScript中属性getter和setter
  • JVM 类加载机制2
  • 阻塞信号(`blockSignals(true)`)的作用
  • c++----继承(初阶)