华为仓颉语言入门(6):if条件表达式
解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界
仓颉语言中的 if 表达式用于根据条件的值来决定是否执行相关代码逻辑。if 表达式有三种形式:单分支的 if 表达式、双分支的 if 表达式和嵌套的 if 表达式。
单分支的 if 表达式
单分支的 if 表达式只有一个分支,其语法如下:
if (条件) {代码块
}
其中的条件必须是一个布尔类型的表达式,由一对匹配的花括号包围代码块。执行时,首先测试条件的值,如果条件为 true,就执行括号内的代码块;否则,不执行任何代码。
例如:
// isScorePassed 表示分数是否合格,true 表示合格,false 表示不合格
if (isScorePassed) {println("合格")
}
println("执行完毕")
在上述代码中,isScorePassed 为 true 时,将输出:
合格
执行完毕
如果 isScorePassed 为 false,则只会输出:
执行完毕
这表明,单分支的 if 表达式是否会执行代码,完全取决于条件的取值。值得注意的是,if 表达式的类型为 Unit,其值为 0。
双分支的 if 表达式
双分支的 if 表达式包含两个分支,语法如下:
if (条件) {代码块1
} else {代码块2
}
在执行时,如果条件为 true,执行代码块1;如果条件为 false,则执行代码块2。
例如:
if (isScorePassed) {println("合格")
} else {println("不合格")
}
println("执行完毕")
如果 isScorePassed 为 true,输出结果为:
合格
执行完毕
如果 isScorePassed 为 false,输出结果为:
不合格
执行完毕
这里,else 分支必须在 if 表达式之后的代码中运行。
双分支 if 表达式的类型
当 if 表达式的值被使用时,双分支的 if 表达式的类型是 if 分支和 else 分支类型的最小公共父类。
例如:
main() {var creditScore: UInt16 = 800var interestRate: Float64 = if (creditScore >= 600) {0.06} else {0.08}println(interestRate)
}
在这个例子中,interestRate 的值是根据 creditScore 的值决定的。如果 creditScore 大于或等于 600,则利率为 0.06;否则,利率为 0.08。最终输出利率的结果。
嵌套的 if 表达式
当希望匹配更多的条件时,可以使用嵌套的 if 表达式。嵌套 if 表达式可以包含多个分支。其语法结构如下:
if (条件1) {代码块1
} else if (条件2) {代码块2
} ...
else {代码块n
}
其中每个条件都必须是布尔类型的表达式。整个 if 表达式的执行流程如下:
- 测试条件1的值,如果为
true,执行代码块1,整个if表达式结束; - 如果条件1为
false,测试条件2的值,以此类推,直到找到为true的条件; - 如果所有条件都为
false,则执行else分支中的代码块。
例如:
if (creditScore < 600) {interestRate = 0.08
} else if (creditScore < 800) {interestRate = 0.06
} else {interestRate = 0.05
}
println(interestRate)
根据 creditScore 的值,选择执行不同的分支,最终输出相应的利率。
if 表达式中的类型推断
在某些情况下,if 表达式不仅用于条件分支选择,还可以返回值。此时,if 表达式的返回值类型由 if 和 else 分支的类型决定。
例如,以下代码会根据 creditScore 的值,推断出 interestRate 的类型:
main() {var creditScore: UInt16 = 800var interestRate: Float64 = if (creditScore >= 600) {0.06} else {0.08}println(interestRate)
}
在这个例子中,interestRate 的类型被推断为 Float64,因为 if 和 else 分支中的返回值都是浮点数。这种情况适用于条件表达式需要返回一个值的场景。
嵌套 if 表达式中的执行顺序
嵌套的 if 表达式可以根据多个条件执行不同的逻辑。例如,以下代码展示了如何根据不同的 creditScore 值调整利率:
if (creditScore < 600) {interestRate = 0.08
} else if (creditScore < 800) {interestRate = 0.06
} else if (creditScore < 1000) {interestRate = 0.05
} else {interestRate = 0.04
}
在这个例子中,程序将依次测试 creditScore 是否满足每个条件,直到找到符合条件的分支。如果 creditScore 小于 600,利率设置为 0.08;如果小于 800,但大于等于 600,利率为 0.06,以此类推。最终的输出结果取决于条件的匹配情况。
条件表达式的最佳实践
对于 if 表达式的使用,编写整洁的代码并避免重复是非常重要的。例如,如果条件非常复杂,可以通过添加额外的条件块减少不必要的代码重复,确保代码逻辑清晰。
例如:
if (creditScore <= 1000) {if (creditScore < 600) {interestRate = 0.08} else if (creditScore < 800) {interestRate = 0.06} else if (creditScore < 900) {interestRate = 0.05} else {interestRate = 0.04}
} else {println("数据错误!")
}
这种写法将不同的条件组合在一起,确保只有在 creditScore 小于等于 1000 时才会进入利率设置的逻辑,如果超出此范围,将输出错误信息。这是一种防止数据错误的良好实践。
相关文章:
华为仓颉语言入门(6):if条件表达式
解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 仓颉语言中的 if 表达式用于根据条件的值来决定是否执行相关代码逻辑。if 表达式有三种形式:单分支的 if 表达式、双分支的 if 表达式和嵌套的 if 表达式。 单分支的 if 表达式 单分支的 …...
openlayers中一些问题的解决方案
一、使用地图时可能会出现的需求 1、定位:需要将地图的中心视野,定位到研究区域的中心点; 2、地图蒙版:只研究特定区域,将其他部分区域用蒙层遮罩,突显重点; 3、变色:设置整体的地图…...
java通过redis完成幂等性操作
4 幂等 产生 “重复数据或数据不一致”( 假定程序业务代码没问题 ),绝大部分就是发生了重复的请求,重复请求是指"同一个请求因为某些原因被多次提交"。导致这个情况会有几种场景: 微服务场景,在…...
48 旋转图像
解题思路: \qquad 这道题同样需要用模拟解决,原地算法要求空间复杂度尽量小,最好为 O ( 1 ) O(1) O(1)。模拟的关键是找到旋转的内在规律,即旋转前后的位置坐标的变化规律。 \qquad 正方形矩阵类似洋葱,可以由不同大小…...
TDengine 签约青山钢铁,实现冶金全流程质量管控智能化
在不锈钢生产领域,企业面临着信息孤岛和数据分散的挑战,尤其在冶炼、连铸和轧钢等关键工艺以及能源管理上,这种现象导致生产要素(人、机、料、法、环)的分析管理模型难以全面、深入地实施。为了应对这一挑战࿰…...
__pycache__文件夹
__pycache__ 文件夹是 Python 在运行时自动生成的目录,用于存储已编译的字节码文件。这些字节码文件以 .pyc 扩展名结尾,用于加速程序的启动时间,因为不需要每次运行时都重新编译源代码。 主要特点 自动生成:__pycache__ 文件夹…...
利用 Local Data 导入文件到 OceanBase 的方法
背景 在很多传统方法中,数据的传输常依赖于csv格式。为了提高传输效率,属于同一张表的多个csv文件往往会被打包成gz文件进行传输。 当gz文件从上游传递到下游后,为了将其中的csv数据导入数据库,一种直接的做法是: 1…...
改变安全策略的五大实践
随着网络威胁形势的加剧,网络安全计划必须不断发展以保护组织的使命。 为了管理这种持续的网络安全发展,应遵循五项关键的安全计划变更管理实践: 1. 识别并吸引受安全风险影响的业务利益相关者 随着新的网络安全风险被发现,受影…...
在MacOS上安装MongoDB数据库
一、安装方法 1.1 安装包安装 首先,打开MongoDB 官网下载安装包,下载链接:https://www.mongodb.com/try/download/community。 根据自己的系统环境自行选择下载的版本。将下载好的 MongoDB 安装包解压缩,并将文件夹名改为 mon…...
负载均衡--会话保持失败原因及解决方案(五)
会话保持失败可能由多种因素导致,以下是一些主要原因及其解释: 一、服务器及网络问题 服务器故障: 服务器出现故障或不稳定,导致无法正确处理会话信息。这可能是由于硬件故障、网络问题或软件错误等引起的。网络问题:…...
24 Vue3之集成TailwindCSS
Tailwind CSS Tailwind CSS是一个由js编写的CSS 框架 他是基于postCss 去解析的 官网地址Tailwind CSS 中文文档 - Tailwind CSS - 只需书写 HTML 代码,无需书写 CSS,即可快速构建美观的网站。 | TailwindCSS中文文档 | TailwindCSS中文网 对于PostCSS…...
iOS OC 底层原理之 category、load、initialize
文章目录 category底层结构runtime 执行 category 底层原理添加成员变量 load调用形式系统调用形式的内部原理源码实现逻辑 initialize调用形式源码核心函数(由上到下依次调用)如果分类实现了 initialize category 底层结构 本质是结构体。struct _cat…...
另外知识与网络总结
一、重谈NAT(工作在网络层) 为什么会有NAT 为了解决ipv4地址太少问题,到了公网的末端就会有运营商路由器来构建私网,在不同私网中私有IP可以重复,这就可以缓解IP地址太少问题,但是这就导致私有IP是重复的…...
怎样用云手机进行TikTok矩阵运营?
在运营TikTok矩阵时,许多用户常常面临操作复杂、设备过多等问题。如果你也感到操作繁琐,不妨考虑使用云手机。云手机具备丰富的功能,能够帮助电商卖家快速打造高效的TikTok矩阵。接下来,我们将详细解析这些功能如何提升你的运营效…...
RTMP播放器全解析
一、RTMP 播放器概述 (一)RTMP 播放器的定义与作用 RTMP 播放器是一种专门用于播放采用 RTMP(Real Time Messaging Protocol)协议的视频流的工具。在当今的流媒体播放领域中,它扮演着至关重要的角色。RTMP 播放器能够…...
定期清洗ip是为了什么?怎么清洗iip
定期清洗IP(也称为“IP清理”)的目的是确保使用的IP池保持高效、可靠、安全,避免因使用无效或被封禁的IP导致网络操作失败。尤其在数据爬取、负载均衡等使用代理的场景中,定期清洗IP有助于提升整体的性能和数据抓取成功率。 定期…...
谁能给我一个ai现在无法替代画师的理由?
小白可做!全自动AI影视解说一键成片剪辑工具https://docs.qq.com/doc/DYnl6d0FLdHp0V2ll 如何看待现如今的AI绘画 哎呀玫瑰花来了,所有花式都要玩完了。 我相信大家在网上已经看过了太多惊为天人的AI绘画作品,有人抵制,有人支持&a…...
深入理解MySQL InnoDB中的B+索引机制
目录 一、InnoDB中的B 树索引介绍 二、聚簇索引 (一)使用记录主键值的大小进行排序 页内记录排序 页之间的排序 目录项页的排序 (二)叶子节点存储完整的用户记录 数据即索引 自动创建 (三)聚簇索引…...
语言的输入
编程语言提供最基本的输入输出,输入一个预期的数据也不是看起来那么简单,如下一一展开。 不同输入形式 C语言scanf提供格式串输入,程序员负责配置正确的格式,比如%d整型,%s为字符串。可能出现格式串和变量格式、个数不…...
2024年中国电子学会青少年软件编程(Python)等级考试(二级)核心考点速查卡
考前练习 2024年03月中国电子学会青少年软件编程(Python)等级考试试卷(二级)答案 解析 2024年06月中国电子学会青少年软件编程(Python)等级考试试卷(二级)答案 解析 知识点描述 …...
UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
C++初阶-list的底层
目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...
ubuntu搭建nfs服务centos挂载访问
在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...
【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...
多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验
一、多模态商品数据接口的技术架构 (一)多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如,当用户上传一张“蓝色连衣裙”的图片时,接口可自动提取图像中的颜色(RGB值&…...
Rust 异步编程
Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...
HTML前端开发:JavaScript 常用事件详解
作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...
智能AI电话机器人系统的识别能力现状与发展水平
一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...
