news 2026/5/4 9:54:35

第4篇:条件判断——让程序做选择 仓颉原文编程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
第4篇:条件判断——让程序做选择 仓颉原文编程

第4篇:条件判断——让程序做选择

**作者:**中文编程倡导者—— 李金雨
联系方式:wbtm2718@qq.com
**目标读者:**编程入门(零基础)
核心理念:使用华为仓颉原生中文编程,体验真正的国产编程语言


一、开篇引入

1.1 生活中的"选择"

生活中处处都有"如果…那么…":

  • 如果下雨,那么带伞
  • 如果到18岁,那么可以考驾照
  • 如果成绩>=60,那么及格
  • 如果登录了,那么显示用户名

1.2 程序中的"选择"

程序也需要根据不同情况做出选择:

  • 用户输入密码正确 → 进入系统
  • 用户输入密码错误 → 提示重新输入
  • 成绩>=60 → 显示"及格"
  • 成绩<60 → 显示"不及格"

1.3 关于条件语句语法的思考

在学习条件判断之前,我们再聊聊仓颉的语法设计。

仓颉的条件语句是:

if (条件) { // 代码 }

这个设计其实挺好的,if是国际上通用的关键字,大家都认识。

但是,如果我们真的要做一款"纯中文"的编程语言,是不是可以考虑:

// 设想中的纯中文语法 如果 (条件) { // 代码 } 否则如果 (另一个条件) { // 代码 } 否则 { // 代码 }

或者像易语言那样:

// 设想中的中文语法 如果 (成绩 >= 90) { 显示("优秀") } 否则如果 (成绩 >= 60) { 显示("及格") } 否则 { 显示("不及格") }

当然,使用ifelse等国际通用关键字也有好处:

  1. 与国际接轨,学会仓颉后学其他语言容易
  2. 关键字简短,输入方便
  3. 代码看起来更"专业"

所以,这是一个权衡的问题。仓颉选择了国际化路线,我们也可以接受!

1.4 本课目标

今天我们要学习:

  1. if语句——单条件判断
  2. if-else语句——二选一
  3. if-else if-else语句——多选一
  4. 嵌套条件判断
  5. 做一个智能评分系统

二、概念讲解

2.1 if语句——最简单的判断

基本语法
if (条件) { // 条件为true时执行的代码 }
生活例子
如果 (外面在下雨) { 带伞出门 }
代码示例
main() { let 成绩: Int64 = 85 if (成绩 >= 60) { println("恭喜你,及格了!") } println("程序结束") }

执行流程:

  1. 检查成绩 >= 60是否为true
  2. 如果是true,执行println("恭喜你,及格了!")
  3. 继续执行后面的代码println("程序结束")

2.2 if-else语句——二选一

基本语法
if (条件) { // 条件为true时执行 } else { // 条件为false时执行 }
生活例子
如果 (我有带伞) { 走路去上学 } 否则 { 坐公交车去上学 }
代码示例
main() { let 成绩: Int64 = 55 if (成绩 >= 60) { println("恭喜你,及格了!") } else { println("很遗憾,不及格,要加油哦!") } }

2.3 if-else if-else语句——多选一

基本语法
if (条件1) { // 条件1为true时执行 } else if (条件2) { // 条件2为true时执行 } else if (条件3) { // 条件3为true时执行 } else { // 以上条件都不满足时执行 }
代码示例:成绩等级评定
main() { let 成绩: Int64 = 85 if (成绩 >= 90) { println("等级:优秀(A)") println("评价:太棒了!") } else if (成绩 >= 80) { println("等级:良好(B)") println("评价:很不错!") } else if (成绩 >= 70) { println("等级:中等(C)") println("评价:还可以!") } else if (成绩 >= 60) { println("等级:及格(D)") println("评价:勉强过关!") } else { println("等级:不及格(F)") println("评价:需要努力!") } }

2.4 嵌套条件判断

什么是嵌套?

条件判断里面还有条件判断,就像俄罗斯套娃。

代码示例:会员等级判断
main() { let 消费金额: Float64 = 1500.0 let 注册时长: Int64 = 2 // 年 let 是否VIP: Bool = true if (是否VIP) { println("您是VIP会员") if (消费金额 >= 10000) { println("等级:钻石会员") } else if (消费金额 >= 5000) { println("等级:白金会员") } else if (消费金额 >= 1000) { println("等级:黄金会员") } else { println("等级:普通VIP") } } else { println("您是普通用户") if (注册时长 >= 1) { println("可以升级为VIP") } else { println("再使用一段时间可以升级为VIP") } } }

2.5 条件表达式(三目运算符)

基本语法
let 结果 = 条件 ? 值1 : 值2

如果条件为true,结果是值1;否则结果是值2。

代码示例
main() { let 成绩: Int64 = 75 // 判断及格与否 let 状态: String = 成绩 >= 60 ? "及格" : "不及格" println("状态:${状态}") // 判断年龄阶段 let 年龄: Int64 = 25 let 阶段: String = 年龄 < 18 ? "未成年" : "成年" println("阶段:${阶段}") }

再次吐槽语法设计

这里的?:三目运算符是国际通用的,但如果我们用中文设计,可能会是:

// 设想中的中文语法 let 状态 = 如果 (成绩 >= 60) 那么 "及格" 否则 "不及格"

这样读起来就像是完整的中文句子,更符合我们的语言习惯!


三、动手实践

3.1 基础练习:智能评分系统

// 智能评分系统 main() { println("=== 智能评分系统 ===") println("") // 定义成绩 let 语文: Int64 = 88 let 数学: Int64 = 92 let 英语: Int64 = 85 println("语文:${语文}分") println("数学:${数学}分") println("英语:${英语}分") println("") // 计算总分和平均分 let 总分: Int64 = 语文 + 数学 + 英语 let 平均分: Float64 = Float64(总分) / 3.0 println("总分:${总分}分") println("平均分:${平均分}分") println("") // 判断总分等级 println("【总分评价】") if (总分 >= 270) { println("评价:优秀!") println("奖励:免作业一周") } else if (总分 >= 240) { println("评价:良好!") println("奖励:免作业一天") } else if (总分 >= 210) { println("评价:中等") println("奖励:口头表扬") } else if (总分 >= 180) { println("评价:及格") println("建议:需要努力") } else { println("评价:不及格") println("建议:请家长") } println("") // 判断是否有偏科 println("【偏科分析】") let 最高分: Int64 = max(语文, max(数学, 英语)) let 最低分: Int64 = min(语文, min(数学, 英语)) let 分差: Int64 = 最高分 - 最低分 if (分差 > 20) { println("警告:偏科严重!") println("最高分与最低分相差${分差}分") if (语文 == 最低分) { println("建议:加强语文学习") } if (数学 == 最低分) { println("建议:加强数学学习") } if (英语 == 最低分) { println("建议:加强英语学习") } } else { println("很好:各科发展均衡") } println("") // 判断是否可以评优 println("【评优资格】") let 全部及格: Bool = 语文 >= 60 && 数学 >= 60 && 英语 >= 60 let 有优秀: Bool = 语文 >= 90 || 数学 >= 90 || 英语 >= 90 if (全部及格 && 有优秀) { println("可以参评:三好学生") } else if (全部及格) { println("可以参评:进步学生") } else { println("暂不符合评优条件") } } // 辅助函数 func max(a: Int64, b: Int64): Int64 { if (a > b) { return a } else { return b } } func min(a: Int64, b: Int64): Int64 { if (a < b) { return a } else { return b } }

3.2 进阶练习:智能日历

// 智能日历 main() { println("=== 智能日历 ===") println("") // 定义日期 let 年: Int64 = 2024 let 月: Int64 = 6 let 日: Int64 = 15 println("日期:${年}年${月}月${日}日") println("") // 判断季节 println("【季节判断】") if (月 >= 3 && 月 <= 5) { println("季节:春季") println("建议:踏青赏花") } else if (月 >= 6 && 月 <= 8) { println("季节:夏季") println("建议:注意防暑") } else if (月 >= 9 && 月 <= 11) { println("季节:秋季") println("建议:秋高气爽,适合运动") } else { println("季节:冬季") println("建议:注意保暖") } println("") // 判断节假日 println("【节假日判断】") if (月 == 1 && 日 == 1) { println("节日:元旦") } else if (月 == 5 && 日 == 1) { println("节日:劳动节") } else if (月 == 6 && 日 == 1) { println("节日:儿童节") } else if (月 == 10 && 日 == 1) { println("节日:国庆节") } else if (月 == 12 && 日 == 25) { println("节日:圣诞节") } else { println("普通日期") } println("") // 判断是否为周末(简化版) println("【周末判断】") // 假设2024年6月15日是星期六 let 是周末: Bool = true if (是周末) { println("今天是周末,好好休息!") } else { println("今天是工作日,认真学习!") } }

3.3 挑战练习:猜拳游戏

// 猜拳游戏(人机对战) import std.random.* main() { println("=== 猜拳游戏 ===") println("规则:0-石头,1-剪刀,2-布") println("") // 电脑随机出拳 let 电脑出拳: Int64 = randomInt(0, 3) // 0, 1, 2 // 玩家出拳(这里模拟玩家出石头) let 玩家出拳: Int64 = 0 // 玩家出石头 // 显示双方出拳 println("你出:${出拳名称(玩家出拳)}") println("电脑出:${出拳名称(电脑出拳)}") println("") // 判断胜负 if (玩家出拳 == 电脑出拳) { println("结果:平局!") } else if ((玩家出拳 == 0 && 电脑出拳 == 1) || // 石头胜剪刀 (玩家出拳 == 1 && 电脑出拳 == 2) || // 剪刀胜布 (玩家出拳 == 2 && 电脑出拳 == 0)) { // 布胜石头 println("结果:你赢了!") } else { println("结果:你输了!") } } func 出拳名称(出拳: Int64): String { if (出拳 == 0) { return "石头" } else if (出拳 == 1) { return "剪刀" } else { return "布" } }

四、知识总结

4.1 核心概念回顾

  1. if语句:单条件判断
  2. if-else语句:二选一
  3. if-else if-else语句:多选一
  4. 嵌套条件:条件里面还有条件
  5. 三目运算符:简洁的条件表达式

4.2 关于语法设计的总结

仓颉的条件语句设计采用了国际通用的if-else关键字,这是一个比较务实的选择:

优点:

  • 与国际接轨,易于学习其他语言
  • 关键字简短,输入方便
  • 代码可读性好

如果我们设计纯中文编程语言:

// 设想中的纯中文语法 如果 (成绩 >= 90) { 显示("优秀") } 否则如果 (成绩 >= 60) { 显示("及格") } 否则 { 显示("不及格") }

这样的语法更符合中文习惯,但可能不利于国际化。

仓颉的选择是合理的:在保留中文标识符优势的同时,使用国际通用的控制流关键字,兼顾了本土化和国际化。

4.3 关键代码速查

// 单条件 if (条件) { // 代码 } // 二选一 if (条件) { // 条件为true } else { // 条件为false } // 多选一 if (条件1) { // 条件1为true } else if (条件2) { // 条件2为true } else { // 都不满足 } // 三目运算符 let 结果 = 条件 ? 值1 : 值2

4.4 常见错误提醒

错误现象原因解决方法
条件不生效用了=而不是==比较用==,赋值用=
所有条件都执行用了多个if而不是else if用else if连接
逻辑错误条件写错检查条件表达式
嵌套太深条件太多考虑简化逻辑

五、课后作业

5.1 巩固练习(必做)

练习1:身体质量指数(BMI)计算器

输入身高和体重,计算BMI并给出健康建议:

  • BMI < 18.5:偏瘦
  • 18.5 <= BMI < 24:正常
  • 24 <= BMI < 28:偏胖
  • BMI >= 28:肥胖

练习2:出租车计费系统

计费规则:

  • 起步价:10元(3公里内)
  • 3-10公里:2元/公里
  • 10公里以上:3元/公里
  • 夜间(23:00-5:00):加价20%

练习3:日期有效性检查

输入年、月、日,判断是否为有效日期:

  • 月份是否在1-12之间
  • 日期是否在合理范围内(考虑闰年)

5.2 创意编程(选做)

创意1:简易计算器

实现支持加减乘除的计算器,可以连续运算。

创意2:猜数字游戏

程序随机生成1-100的数字,用户猜数字,程序提示"大了"或"小了",记录猜测次数。

创意3:24点游戏

输入4个数字,判断是否能通过加减乘除得到24。

5.3 下篇预习

下一篇,我们将学习重复做——循环语句,让程序能够重复执行任务。预习问题:

  1. 怎么让程序重复执行10次?
  2. 怎么遍历一个列表中的所有元素?
  3. 怎么实现"当条件满足时一直做"?

恭喜你完成了第4篇的学习!🎉

现在你已经掌握了条件判断,可以让程序根据不同情况做出选择了。虽然if-else是国际通用的关键字,但配合中文变量名,代码依然清晰易读!

下节课,我们将学习循环语句,让程序能够重复执行任务!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/4 9:49:49

KeymouseGo完整指南:三步实现桌面自动化,轻松解放双手

KeymouseGo完整指南&#xff1a;三步实现桌面自动化&#xff0c;轻松解放双手 【免费下载链接】KeymouseGo 类似按键精灵的鼠标键盘录制和自动化操作 模拟点击和键入 | automate mouse clicks and keyboard input 项目地址: https://gitcode.com/gh_mirrors/ke/KeymouseGo …

作者头像 李华
网站建设 2026/5/4 9:47:42

立即解决!Windows任务栏透明美化神器TranslucentTB全攻略

立即解决&#xff01;Windows任务栏透明美化神器TranslucentTB全攻略 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB 你是否厌倦了Window…

作者头像 李华
网站建设 2026/5/4 9:47:33

现代汽车租赁前端系统架构:从React技术栈到工程实践全解析

1. 项目概述&#xff1a;一个现代化汽车租赁前端系统的诞生最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“l0sgAi/car-rental-front”。光看这个名字&#xff0c;就能猜到这是一个汽车租赁平台的前端部分。作为一个在Web开发领域摸爬滚打多年的老手&#xff0c;我深知一…

作者头像 李华
网站建设 2026/5/4 9:43:26

唤醒沉睡的Surface RT:3步解锁ARM设备的远程桌面潜能 [特殊字符]

唤醒沉睡的Surface RT&#xff1a;3步解锁ARM设备的远程桌面潜能 &#x1f680; 【免费下载链接】rdpwrap RDP Wrapper Library 项目地址: https://gitcode.com/gh_mirrors/rd/rdpwrap 你是否曾经拥有过一台Surface RT平板&#xff0c;却因为微软的系统限制而无法使用远…

作者头像 李华