让程序把同一件事做很多遍。循环是程序力量感的来源。
设 次数 = 1
循环 次数 <= 3
打印("第" + 文本(次数) + "遍")
次数 = 次数 + 1
输出:
第1遍
第2遍
第3遍
循环 只要条件还成立,缩进里的内容就一遍遍重复。这里的 次数 = 次数 + 1 是关键——读作「把次数改成:原来的次数加一」。
⚠️ 没有这一行,条件永远成立,程序会停不下来(死循环)。写循环一定先想清楚:什么会让条件变成不成立。
上面的写法是最常见的「计数器」模式,三步走:
设 i = 1 # 1. 从几开始
循环 i <= 10 # 2. 做到什么时候停
打印(i)
i = i + 1 # 3. 每遍怎么变
i = i + 1 这种「把变量加一」太常见了,CNplus 有更短的写法:
设 i = 0
i++ # 等价于 i = i + 1
打印(i) # 1
i += 2 # 等价于 i = i + 2
打印(i) # 3
i-- # 等价于 i = i - 1
打印(i) # 2
| 写法 | 等价于 |
|---|---|
i++ |
i = i + 1 |
i-- |
i = i - 1 |
i += 2 |
i = i + 2 |
i -= 2 |
i = i - 2 |
i *= 2 |
i = i * 2 |
i /= 2 |
i = i / 2 |
字符串也能 +=:s += "字" 就是往后接一段。于是上面的计数器循环可以写得更短:
设 i = 1
循环 i <= 10
打印(i)
i++
列表、字典里的元素也能这样(索引复合赋值):
设 表 = [1, 2, 3]
表[0] += 10 # 表[0] = 表[0] + 10
打印(表) # [11, 2, 3]
设 计数 = {"甲": 1}
计数["甲"] += 1 # 计数["甲"] = 计数["甲"] + 1
打印(计数) # {甲: 2}
计数[标签] += 1 在「分组计数」时特别常用——见第三章的字典。
想中途不做了,用 跳出:
设 i = 1
循环 真
打印(i)
i = i + 1
如果 i > 5
跳出 # 直接结束整个循环
这里 循环 真 本来会永远循环,靠 跳出 在 i 超过 5 时结束。
想跳过某几遍但继续循环,用 继续:
设 i = 1
循环 i <= 5
如果 i == 3
i = i + 1
继续 # 跳过 i=3 这一轮
打印(i)
i = i + 1
输出:
1
2
4
5
3 被跳过了。
也可以这么写:
跳出的别名是中断,继续的别名是下一轮,效果一样。这是 CNplus 的「一种意思多种写法」特性,详见关键字与别名。
循环里套判断是常见套路。比如「打印 1 到 10 里的偶数」:
设 i = 1
循环 i <= 10
如果 i % 2 == 0
打印(i)
i = i + 1
学过 Python 的人,看这里——这一章学的,用 Python 写是这样。零基础可以直接跳过,去下面做「练一练」。
先把这一章串成一个完整程序(CNplus):
设 i = 1
循环 i <= 5
打印(i)
i = i + 1
同一个程序,用 Python 写:
i = 1
while i <= 5: # 循环 i <= 5(结尾冒号)
print(i)
i = i + 1 # Python 没有 i++,用 i += 1 也行
| CNplus | Python |
|---|---|
循环 条件 |
while 条件: |
i++ / i-- |
无(Python 没有自增),用 i += 1 / i -= 1 |
i += 2 / -= / *= / /= |
一样 |
跳出 |
break |
继续 |
continue |
下一步:做练习,然后继续下一课。