731 字
4 分钟
阅读量加载中
我的第一个仓颉程序:运行过程与 Python 写法对照
2026-09-30
2026-09-30

用 cjpm run 跑通了第一个仓颉程序。它做的事很简单:打印 0 到 9 里的奇数。仓颉和 Python 的逻辑完全一样,差别全在写法上——范围写成 0..10(对应 Python 的 range(10)),而过滤条件从循环体里的 if 挪到了 for 头的 where。下面是两次跑通的过程,以及两种写法的逐项对比。

前置条件#

  • 装好仓颉 SDK,cjpm 命令可用
  • Python 3,用来对照两种写法的差异
  • 知道基本的 for 循环和取模运算(%)

第一个程序#

把代码存成项目根目录下的 main.cj:

main() {
for (i in 0..10 where i % 2 == 1) {
println(i)
}
}

在项目根目录下敲 cjpm run,终端输出:

1
3
5
7
9

和 Python 写法的差异#

同样的逻辑用 Python 写是这样:

for i in range(10):
if i % 2 == 1:
print(i)

两段代码干的事完全一样,但结构差异一眼就能看出来:

对比项Python仓颉
遍历范围range(10)0..10
过滤条件位置循环体里的 iffor 头里的 where
读法先遍历 0 到 9,再筛掉偶数遍历 0 到 9 中满足 i % 2 == 1 的

0..10 对应 range(10),都是左闭右开。区别在过滤条件的位置:Python 的 if 缩进在循环体里,仓颉的 where 挂在 for 的括号里。后者把范围和条件压在一行,少一层缩进,意图更直接。

紧凑写法对比#

Python 里想写得紧凑点可以用生成器表达式:

for i in (x for x in range(10) if x % 2 == 1):
print(i)

输出一样,但 (x for x in ...) 这层壳比 where 重。Python 日常还是写 if 居多,仓颉等于把这个常见模式收进了语法本身。

第一个程序就跑通了一个 for + where,最直接的感受是仓颉把 Python 里靠缩进和习惯表达的东西做成了关键字:where 进 for 头,少写一层 if,读起来反而更清楚。

我实际遇到的几个问题#

仓颉的 0..10 是左闭右开吗?#

是。0..10 对应 Python 的 range(10),包含 0 不包含 10,实际遍历的是 0 到 9。如果要包含右端点,要写成 0..=10(等价于 range(11)),例如 for (i in 0..=9) 会遍历到 9。

where 能等价于 Python 的 if 吗?#

在遍历过滤这个场景下等价:两者都是「遍历时跳过不满足条件的元素」,逻辑上都是对每次迭代做一次判断。差别只在写法位置和多出来的那层缩进。where 后面要加多个条件,继续用 && 连就行,比如 for (i in input where i >= 48 && i <= 57)。

第一个程序要怎么跑起来?#

把代码存成项目根目录下的 main.cj,然后在项目根目录执行 cjpm run。前提是仓颉 SDK 装好、cjpm 命令可用;这个例子没有外部依赖,直接跑就行。

我的第一个仓颉程序:运行过程与 Python 写法对照
https://www.violet27chen.com/posts/first-my-cangjie/
作者
violet
发布于
2026-09-30
许可协议
CC BY 4.0

评论

评论将由 AI 自动审核;需要人工确认的内容会在审核通过后显示。

正在加载评论……