第 2 章:数与文本

编程里打交道最多的就是两类数据:数字和文本。这一章把它们讲透。

2.1 数字:整数和小数

基石的数字分两种:

四则运算和 Python 完全一样:

python打印(7 + 2)      # 加法 → 9
打印(7 - 2)      # 减法 → 5
打印(7 * 2)      # 乘法 → 14
打印(7 / 2)      # 除法 → 3.5(注意:除法的结果一定是小数)
打印(7 // 2)     # 整除 → 3(只取整数部分)
打印(7 % 2)      # 取余 → 1(7 除以 2 余 1)
打印(2 ** 10)    # 幂 → 1024(2 的 10 次方)

运算优先级和数学课学的一样:先乘除后加减,括号最优先:

python打印(1 + 2 * 3)       # 7
打印((1 + 2) * 3)     # 9

2.2 文本:字符串

文本(也叫字符串)是用引号包起来的一串字符。基石里单引号、双引号、中文引号都能用:

python令 问候 = "你好"
令 名字 = '小明'
令 语气 = 「世界」
打印(问候, 名字, 语气)

文本可以用 + 拼接,用 长度 数长度:

python令 完整 = "你好," + "世界" + "!"
打印(完整)             # 你好,世界!
打印(长度(完整))       # 7

注意:"123" 是文本,123 是数字。文本的 "1" + "2" 是 "12"(拼在一起), 数字的 1 + 2 才是 3。

文本的常用方法

方法就是"贴在值后面的功能",写法是 值.方法名(...):

python令 s = "  基石语言  "
打印(s.去空白())          # 去掉两头的空格 → 基石语言
打印("abc".大写())        # ABC
打印("ABC".小写())        # abc
打印("a-b-c".拆分("-"))   # ['a', 'b', 'c'](拆成列表)
打印("你好世界".替换("世界", "基石"))   # 你好基石
打印("基石".开头是("基"))  # 真
打印("基石".结尾是("石"))  # 真
打印("基石".包含("石"))    # 真
打印("基石语言".查找("语言"))  # 2(找到的位置,找不到返回 -1)

2.3 输入:让程序和人对话

输入(...) 让程序停下来等用户打字:

python令 名字 = 输入("你叫什么名字?")
打印("你好,", 名字)

注意:输入 返回的一定是文本。如果你让用户输入数字并想计算,要先转换:

python令 年龄 = 整数(输入("你几岁?"))     # 文本 → 整数
令 身高 = 小数(输入("你多高(米)?"))  # 文本 → 小数

转换函数:

完整的计算器示例:

python令 a = 小数(输入("请输入第一个数:"))
令 b = 小数(输入("请输入第二个数:"))
打印(a, "+", b, "=", a + b)

2.4 列表:一串东西

列表用方括号 [ ] 表示,可以装任意多个值:

python令 水果 = ["苹果", "香蕉", "橘子"]
打印(水果)              # ['苹果', '香蕉', '橘子']
打印(长度(水果))        # 3
打印(水果[0])           # 苹果(注意:下标从 0 开始!)
打印(水果[2])           # 橘子

重要:下标从 0 开始。水果[0] 是第一个,水果[1] 是第二个……

修改和添加:

python水果[1] = "葡萄"        # 把第 2 个换成葡萄
水果.追加("西瓜")       # 末尾加一个
水果.插入(0, "草莓")    # 在最前面插入
水果.移除("橘子")       # 删掉一个橘子
打印(水果)

其他常用方法:

python令 数字 = [3, 1, 4, 1, 5]
数字.排序()             # 从小到大 → [1, 1, 3, 4, 5]
数字.反转()             # 倒过来
数字.弹出()             # 拿走最后一个并返回它
数字.计数(1)            # 1 出现了几次
数字.包含(4)            # 有没有 4 → 真
数字.索引(5)            # 5 在第几个位置

2.5 范围:快速生成数字序列

范围(...) 生成一串整数,常常配合循环用:

python打印(范围(5))            # [0, 1, 2, 3, 4](从 0 开始,不含 5)
打印(范围(1, 5))         # [1, 2, 3, 4]
打印(范围(1, 10, 2))     # [1, 3, 5, 7, 9](步长 2)

2.6 试试看

  1. 写一个程序:输入一个圆的半径,输出它的面积(圆周率用 3.14159)。
  2. 创建列表 [5, 2, 8, 1, 9],排序后打印第一个和最后一个元素。
  3. 输入一句话,用 .去空白() 清理后,打印它的长度。
  4. 把 "基石" 重复 3 次拼起来(提示:"基石" * 3 在基石里也可以哦,试试看)。

示例代码:examples/tutorial/02_计算器.jsh、examples/tutorial/03_清单.jsh

本章小结