CNplus 自带 36 个内置函数,不用导入直接能用。按用途分七类,全列在这里。
名字 = 值。直接调用(长度(x))和点调用(x.长度())都一样,只认位置不认名字。CN0306;参数类型不对报 CN0303。真、假 是布尔,不算整数。追加、插入、移除、删标签 这类会改原值的函数,完成后返回 空。例如,长度([1, 2]) 是正确写法;下面点名传值会报 CN0306:
长度(值 = [1, 2])
自定义函数的传参规则不同,可全按位置或全按名字传,见函数入门。
| 函数 | 作用 | 例子 | 结果 |
|---|---|---|---|
打印(…) |
显示到屏幕(多个用空格连) | 打印(1, 2, 3) |
1 2 3 |
类型(值) |
查类型名 | 类型("你好") |
字符串 |
文本(值) |
转成文字 | 文本(真) |
"真" |
整数(值) |
转成整数 | 整数("5") |
5 |
小数(值) |
转成小数 | 小数("3.14") |
3.14 |
类型() 能认出九种:整数 小数 字符串 布尔 空 列表 字典 函数 类。对对象(实例)用 类型(),返回它所属的类名(类见第五章)。
整数(真)、小数(假) 不会把布尔当成 1 或 0,而会报 CN0303。CNplus 刻意把布尔和数值分开。
| 函数 | 作用 | 例子 | 结果 |
|---|---|---|---|
询问(提示) |
读一行文字(提示语可省略) | 询问("名字?") |
你输入的文字;输入结束时是空文字 |
询问数值(提示) |
读一个数字,输错自动重问 | 询问数值("年龄?") |
你输入的数字;输入结束报 CN0310 |
(详见输入输出。)
| 函数 | 作用 | 例子 | 结果 |
|---|---|---|---|
长度(值) |
数一数有多少个 | 长度([1,2,3]) / 长度("你好") |
3 / 2 |
范围(…) |
造一串数字(见第三章的遍历) | 范围(1, 6) |
[1,2,3,4,5] |
随机数(小, 大) |
两端先向 0 取整,再取含两端的随机整数 | 随机数(1, 6) |
掷骰子 |
| 函数 | 作用 | 例子 | 结果 |
|---|---|---|---|
绝对值(数) |
去掉负号 | 绝对值(-5) |
5 |
最大(…) |
取最大的;可传多个数值/文字,或一个列表/文字 | 最大(3, 1, 2) 或 最大([3,1,2]) |
3 |
最小(…) |
规则同 最大,取最小的 |
最小([3,1,2]) |
1 |
求和(列表) |
把数值加起来,列表里不能混入其他类型 | 求和([1,2,3]) |
6 |
四舍五入(数) |
四舍五入 | 四舍五入(3.14159, 2) |
3.14 |
平方根(数) |
开平方 | 平方根(16) |
4.0 |
| 函数 | 作用 | 是否改原列表 |
|---|---|---|
追加(表, 项) |
末尾加一个,返回 空 |
改 |
插入(表, 位, 项) |
插到指定位置;越界夹到开头或末尾,返回 空 |
改 |
移除(表, 项) |
删掉第一个相同值;找不到报 CN0303 |
改 |
弹出(表) / 弹出(表, 位) |
拿走并返回;空表或越界报 CN0308 |
改 |
排序(表) |
返回排好序的新列表;项目必须都是可比较的数值或文字 | 不改 |
倒序(列表) |
返回倒过来的新列表 | 不改 |
包含(表, 项) |
在不在里面 → 布尔 | — |
连接(表, 分隔) |
连成一条文字 | — |
| 函数 | 作用 | 例子 | 结果 |
|---|---|---|---|
所有标签(字) |
所有标签 → 列表 | 所有标签({"a":1,"b":2}) |
[a, b] |
所有值(字) |
所有值 → 列表 | 所有值({"a":1,"b":2}) |
[1,2] |
有标签(字, 标签) |
有没有这个标签 | 有标签({"a":1}, "a") |
真 |
删标签(字, 标签) |
删掉一个标签 | — | — |
| 函数 | 作用 | 例子 | 结果 |
|---|---|---|---|
分割(文字, 分隔) |
按分隔拆成列表 | 分割("a,b,c", ",") |
[a, b, c] |
倒序(文字) |
返回倒过来的新文字 | 倒序("甲😀乙") |
"乙😀甲" |
替换(文字, 旧, 新) |
替换 | 替换("abc", "b", "X") |
"aXc" |
查找(文字, 子串) |
找位置(从 0 数) | 查找("abc", "b") |
1 |
去空白(文字) |
去掉首尾空白 | 去空白(" hi ") |
"hi" |
大写(文字) |
转大写 | 大写("abc") |
"ABC" |
小写(文字) |
转小写 | 小写("ABC") |
"abc" |
开头是(文字, 前) |
是不是这样开头 | 开头是("你好", "你") |
真 |
结尾是(文字, 后) |
是不是这样结尾 | 结尾是("abc", "c") |
真 |
倒序 可以接列表或文字,得到的新值仍是原来的类型,而且不会改动原值:
设 原列表 = [1, 2, 3]
打印(倒序(原列表)) # [3, 2, 1]
打印(原列表) # [1, 2, 3](没变)
设 原文字 = "甲😀乙"
打印(倒序(原文字)) # 乙😀甲
打印(原文字.倒序()) # 乙😀甲(点调用,完全等价)
打印(原文字) # 甲😀乙(没变)
文字按 Unicode 码点倒序,像示例里的单码点 emoji 不会被拆成两个半截。
💡 给变量起名时,尽量避开上面这些函数名。CNplus 允许重名(会用你的变量盖住内置函数),但那样内置函数就用不了了。
学过 Python 的人,看这里——这一章的内置函数,在 Python 里大多有对应。零基础可以直接跳过,去下面做「练一练」。
先用两个内置函数做个完整小程序(CNplus):
设 s = " hi "
打印(去空白(s))
打印(大写(去空白(s)))
同一个程序,用 Python 写:
s = " hi "
print(s.strip()) # 去空白(s)
print(s.strip().upper()) # 大写(去空白(s))
| CNplus | Python |
|---|---|
打印(x) |
print(x) |
类型(x) |
type(x) |
文本(x) |
str(x) |
整数(x) / 小数(x) |
int(x) / float(x) |
长度(x) |
len(x) |
范围(…) |
range(…) |
绝对值(x) |
abs(x) |
最大(…) / 最小(…) |
max(…) / min(…) |
求和(表) |
sum(表) |
四舍五入(x, n) |
round(x, n) |
大写(s) / 小写(s) |
s.upper() / s.lower() |
去空白(s) |
s.strip() |
分割(s, 隔) |
s.split(隔) |
替换(s, 旧, 新) |
s.replace(旧, 新) |
倒序(x) |
x[::-1](列表或文字都返回同类型的新值) |
规律:CNplus 把 Python 里「对象.方法」的形式(s.upper())改成了「函数(对象, …)」(大写(s)),读起来更像中文。CNplus 两种都能用(大写(s) 或 s.大写()),Python 只有点调用。
下一步:做练习,然后继续下一课。