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

华为仓颉语言入门(6):if条件表达式

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

仓颉语言中的 if 表达式用于根据条件的值来决定是否执行相关代码逻辑。if 表达式有三种形式:单分支的 if 表达式、双分支的 if 表达式和嵌套的 if 表达式。

单分支的 if 表达式

单分支的 if 表达式只有一个分支,其语法如下:

if (条件) {代码块
}

其中的条件必须是一个布尔类型的表达式,由一对匹配的花括号包围代码块。执行时,首先测试条件的值,如果条件为 true,就执行括号内的代码块;否则,不执行任何代码。

例如:

// isScorePassed 表示分数是否合格,true 表示合格,false 表示不合格
if (isScorePassed) {println("合格")
}
println("执行完毕")

在上述代码中,isScorePassedtrue 时,将输出:

合格
执行完毕

如果 isScorePassedfalse,则只会输出:

执行完毕

这表明,单分支的 if 表达式是否会执行代码,完全取决于条件的取值。值得注意的是,if 表达式的类型为 Unit,其值为 0

双分支的 if 表达式

双分支的 if 表达式包含两个分支,语法如下:

if (条件) {代码块1
} else {代码块2
}

在执行时,如果条件为 true,执行代码块1;如果条件为 false,则执行代码块2。

例如:

if (isScorePassed) {println("合格")
} else {println("不合格")
}
println("执行完毕")

如果 isScorePassedtrue,输出结果为:

合格
执行完毕

如果 isScorePassedfalse,输出结果为:

不合格
执行完毕

这里,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 表达式的返回值类型由 ifelse 分支的类型决定。

例如,以下代码会根据 creditScore 的值,推断出 interestRate 的类型:

main() {var creditScore: UInt16 = 800var interestRate: Float64 = if (creditScore >= 600) {0.06} else {0.08}println(interestRate)
}

在这个例子中,interestRate 的类型被推断为 Float64,因为 ifelse 分支中的返回值都是浮点数。这种情况适用于条件表达式需要返回一个值的场景。

嵌套 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编程的无限可能&#xff1a;《奇妙的Python》带你漫游代码世界 仓颉语言中的 if 表达式用于根据条件的值来决定是否执行相关代码逻辑。if 表达式有三种形式&#xff1a;单分支的 if 表达式、双分支的 if 表达式和嵌套的 if 表达式。 单分支的 if 表达式 单分支的 …...

openlayers中一些问题的解决方案

一、使用地图时可能会出现的需求 1、定位&#xff1a;需要将地图的中心视野&#xff0c;定位到研究区域的中心点&#xff1b; 2、地图蒙版&#xff1a;只研究特定区域&#xff0c;将其他部分区域用蒙层遮罩&#xff0c;突显重点&#xff1b; 3、变色&#xff1a;设置整体的地图…...

java通过redis完成幂等性操作

4 幂等 产生 “重复数据或数据不一致”&#xff08; 假定程序业务代码没问题 &#xff09;&#xff0c;绝大部分就是发生了重复的请求&#xff0c;重复请求是指"同一个请求因为某些原因被多次提交"。导致这个情况会有几种场景&#xff1a; 微服务场景&#xff0c;在…...

48 旋转图像

解题思路&#xff1a; \qquad 这道题同样需要用模拟解决&#xff0c;原地算法要求空间复杂度尽量小&#xff0c;最好为 O ( 1 ) O(1) O(1)。模拟的关键是找到旋转的内在规律&#xff0c;即旋转前后的位置坐标的变化规律。 \qquad 正方形矩阵类似洋葱&#xff0c;可以由不同大小…...

TDengine 签约青山钢铁,实现冶金全流程质量管控智能化

在不锈钢生产领域&#xff0c;企业面临着信息孤岛和数据分散的挑战&#xff0c;尤其在冶炼、连铸和轧钢等关键工艺以及能源管理上&#xff0c;这种现象导致生产要素&#xff08;人、机、料、法、环&#xff09;的分析管理模型难以全面、深入地实施。为了应对这一挑战&#xff0…...

__pycache__文件夹

__pycache__ 文件夹是 Python 在运行时自动生成的目录&#xff0c;用于存储已编译的字节码文件。这些字节码文件以 .pyc 扩展名结尾&#xff0c;用于加速程序的启动时间&#xff0c;因为不需要每次运行时都重新编译源代码。 主要特点 自动生成&#xff1a;__pycache__ 文件夹…...

利用 Local Data 导入文件到 OceanBase 的方法

背景 在很多传统方法中&#xff0c;数据的传输常依赖于csv格式。为了提高传输效率&#xff0c;属于同一张表的多个csv文件往往会被打包成gz文件进行传输。 当gz文件从上游传递到下游后&#xff0c;为了将其中的csv数据导入数据库&#xff0c;一种直接的做法是&#xff1a; 1…...

改变安全策略的五大实践

随着网络威胁形势的加剧&#xff0c;网络安全计划必须不断发展以保护组织的使命。 为了管理这种持续的网络安全发展&#xff0c;应遵循五项关键的安全计划变更管理实践&#xff1a; 1. 识别并吸引受安全风险影响的业务利益相关者 随着新的网络安全风险被发现&#xff0c;受影…...

在MacOS上安装MongoDB数据库

一、安装方法 1.1 安装包安装 首先&#xff0c;打开MongoDB 官网下载安装包&#xff0c;下载链接&#xff1a;https://www.mongodb.com/try/download/community。 根据自己的系统环境自行选择下载的版本。将下载好的 MongoDB 安装包解压缩&#xff0c;并将文件夹名改为 mon…...

负载均衡--会话保持失败原因及解决方案(五)

会话保持失败可能由多种因素导致&#xff0c;以下是一些主要原因及其解释&#xff1a; 一、服务器及网络问题 服务器故障&#xff1a; 服务器出现故障或不稳定&#xff0c;导致无法正确处理会话信息。这可能是由于硬件故障、网络问题或软件错误等引起的。网络问题&#xff1a…...

24 Vue3之集成TailwindCSS

Tailwind CSS Tailwind CSS是一个由js编写的CSS 框架 他是基于postCss 去解析的 官网地址Tailwind CSS 中文文档 - Tailwind CSS - 只需书写 HTML 代码&#xff0c;无需书写 CSS&#xff0c;即可快速构建美观的网站。 | TailwindCSS中文文档 | TailwindCSS中文网 对于PostCSS…...

iOS OC 底层原理之 category、load、initialize

文章目录 category底层结构runtime 执行 category 底层原理添加成员变量 load调用形式系统调用形式的内部原理源码实现逻辑 initialize调用形式源码核心函数&#xff08;由上到下依次调用&#xff09;如果分类实现了 initialize category 底层结构 本质是结构体。struct _cat…...

另外知识与网络总结

一、重谈NAT&#xff08;工作在网络层&#xff09; 为什么会有NAT 为了解决ipv4地址太少问题&#xff0c;到了公网的末端就会有运营商路由器来构建私网&#xff0c;在不同私网中私有IP可以重复&#xff0c;这就可以缓解IP地址太少问题&#xff0c;但是这就导致私有IP是重复的…...

怎样用云手机进行TikTok矩阵运营?

在运营TikTok矩阵时&#xff0c;许多用户常常面临操作复杂、设备过多等问题。如果你也感到操作繁琐&#xff0c;不妨考虑使用云手机。云手机具备丰富的功能&#xff0c;能够帮助电商卖家快速打造高效的TikTok矩阵。接下来&#xff0c;我们将详细解析这些功能如何提升你的运营效…...

RTMP播放器全解析

一、RTMP 播放器概述 &#xff08;一&#xff09;RTMP 播放器的定义与作用 RTMP 播放器是一种专门用于播放采用 RTMP&#xff08;Real Time Messaging Protocol&#xff09;协议的视频流的工具。在当今的流媒体播放领域中&#xff0c;它扮演着至关重要的角色。RTMP 播放器能够…...

定期清洗ip是为了什么?怎么清洗iip

定期清洗IP&#xff08;也称为“IP清理”&#xff09;的目的是确保使用的IP池保持高效、可靠、安全&#xff0c;避免因使用无效或被封禁的IP导致网络操作失败。尤其在数据爬取、负载均衡等使用代理的场景中&#xff0c;定期清洗IP有助于提升整体的性能和数据抓取成功率。 定期…...

谁能给我一个ai现在无法替代画师的理由?

小白可做&#xff01;全自动AI影视解说一键成片剪辑工具https://docs.qq.com/doc/DYnl6d0FLdHp0V2ll 如何看待现如今的AI绘画 哎呀玫瑰花来了&#xff0c;所有花式都要玩完了。 我相信大家在网上已经看过了太多惊为天人的AI绘画作品&#xff0c;有人抵制&#xff0c;有人支持&a…...

深入理解MySQL InnoDB中的B+索引机制

目录 一、InnoDB中的B 树索引介绍 二、聚簇索引 &#xff08;一&#xff09;使用记录主键值的大小进行排序 页内记录排序 页之间的排序 目录项页的排序 &#xff08;二&#xff09;叶子节点存储完整的用户记录 数据即索引 自动创建 &#xff08;三&#xff09;聚簇索引…...

语言的输入

编程语言提供最基本的输入输出&#xff0c;输入一个预期的数据也不是看起来那么简单&#xff0c;如下一一展开。 不同输入形式 C语言scanf提供格式串输入&#xff0c;程序员负责配置正确的格式&#xff0c;比如%d整型&#xff0c;%s为字符串。可能出现格式串和变量格式、个数不…...

2024年中国电子学会青少年软件编程(Python)等级考试(二级)核心考点速查卡

考前练习 2024年03月中国电子学会青少年软件编程&#xff08;Python&#xff09;等级考试试卷&#xff08;二级&#xff09;答案 解析 2024年06月中国电子学会青少年软件编程&#xff08;Python&#xff09;等级考试试卷&#xff08;二级&#xff09;答案 解析 知识点描述 …...

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周&#xff0c;有很多同学在写期末Java web作业时&#xff0c;运行tomcat出现乱码问题&#xff0c;经过多次解决与研究&#xff0c;我做了如下整理&#xff1a; 原因&#xff1a; IDEA本身编码与tomcat的编码与Windows编码不同导致&#xff0c;Windows 系统控制台…...

Spark 之 入门讲解详细版(1)

1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室&#xff08;Algorithms, Machines, and People Lab&#xff09;开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目&#xff0c;8个月后成为Apache顶级项目&#xff0c;速度之快足见过人之处&…...

FFmpeg 低延迟同屏方案

引言 在实时互动需求激增的当下&#xff0c;无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作&#xff0c;还是游戏直播的画面实时传输&#xff0c;低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架&#xff0c;凭借其灵活的编解码、数据…...

循环冗余码校验CRC码 算法步骤+详细实例计算

通信过程&#xff1a;&#xff08;白话解释&#xff09; 我们将原始待发送的消息称为 M M M&#xff0c;依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)&#xff08;意思就是 G &#xff08; x ) G&#xff08;x) G&#xff08;x) 是已知的&#xff09;&#xff0…...

CentOS下的分布式内存计算Spark环境部署

一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架&#xff0c;相比 MapReduce 具有以下核心优势&#xff1a; 内存计算&#xff1a;数据可常驻内存&#xff0c;迭代计算性能提升 10-100 倍&#xff08;文档段落&#xff1a;3-79…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

基于Uniapp开发HarmonyOS 5.0旅游应用技术实践

一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架&#xff0c;支持"一次开发&#xff0c;多端部署"&#xff0c;可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务&#xff0c;为旅游应用带来&#xf…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角&#xff0c;以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向&#xff0c;距离坐标原点x个像素;第二个是y坐标&#xff0c;表示当前位置为垂直方向&#xff0c;距离坐标原点y个像素。 坐标体系-像素 …...