变量与数据类型
先有一个能装东西的"格子",才谈得上判断和循环。
学习目标
- 用"Excel 格子"的类比说清变量是什么,分清"名字"与"值"两件事
- 会用可视化命令和源代码两种方式给变量赋值,并说出两者其实是同一件事
- 背下命名规则(可用中文、不区分大小写等),能一眼挑出不合法或易混淆的变量名
- 分辨数值、字符串、布尔、空值四种基础类型,并知道什么时候该用哪一种
- 用
&拼接字符串、用+ - * /做算术,说清&与+的分工 - 读懂一段带逐行注释的三行小程序,并会用转换命令把数字变成文字来拼接
预计用时:读课 40 分钟 + 上机 35 分钟 | 前置知识:第 1 课(概念)、第 2 课(界面:知道命令区、组装区、属性区,会切源代码视图) | 本课性质:语法课(认证必考,是后面判断、循环、数组的地基)
知识地图
前两课解决了"RPA 是什么"和"在哪里做"。从本课起真正开始"写字"——先学会造一个能装东西的变量,再认识它能装哪几种类型的东西,最后学会把值和运算符拼成表达式。判断、循环、数组,全都建立在今天的四样东西上。
& 拼接与 + 加法的分工。承上启下:第 2 课你已经会新建流程块、从命令区拖命令、在属性区填参数。本课要填进属性区里的"值",开始有类型和规则了。学完本课,你才有资格进入第 4 课"让机器人根据条件走不同岔路"。
一、变量就是 Excel 里的一个格子
官方开发者指南用 Excel 来打这个比方,非常贴切:[1]
Excel 里 D2 这个格子有名字(D2)和内容(比如 261.54)。内容可以变,名字不变。你只要说"D2",就能拿到里面最新的值,也能往里塞新值。
变量 = 一个起了名字的格子。名字用来找它,值用来存东西。这个"存进去"的动作就叫赋值。
1.1 名字与值:两件不同的事
新手最常见的混乱,是把"名字"和"值"搅在一起。分开看就清楚了:
| 例子 | 能不能变 | 作用 | |
|---|---|---|---|
| 名字 | 数量、D2 | 固定不变 | 让你能叫出这个格子 |
| 值 | 3、"小明" | 随时可换 | 真正被程序和公式使用的内容 |
所以同一句 数量 = 数量 + 1 读起来是:"取出数量格子里现在的值,加 1,再写回数量这个格子。"名字没变,值变了。
1.2 赋值:为什么这一步这么关键
赋值就是把值放进格子的动作,写作 变量名 = 值。它是程序里最基础的"记忆"能力——机器人要记住刚才从网页复制到的金额、记住循环到第几遍了、记住用户名,全靠赋值。
没有变量,机器人就是一条只会"当下照做"的流水线,做完就忘,没法比较、没法循环。
为什么用"格子"而不是"盒子"来打比方?因为格子有一个重要特性:同一个格子可以换着放不同的东西(先放 3,再放"你好")。这正是"动态类型"的直观样子,下一节和第五节都会用到。
易错点:Excel 里改内容你直接敲进格子;程序里你必须用赋值语句去改。光在属性区或某处"看到"一个值不代表它被存进了变量——值要被写进变量名,才算真的记住了。
二、怎么创建一个变量
两种写法,指的是同一件事——一个在可视化视图做,一个在源代码视图做。
基本命令 ▸ 变量赋值,拖进组装区,在属性区填:变量名 数量,值 3。
数量 = 3 // 直接赋值
Dim 数量 = 3 // 也可以先声明再赋值
Dim 数量 // 只声明,暂时不赋值(值为 Null)
第 2 课你已经知道"可视化视图和源代码视图是同一份东西"。所以上面两个 .demo 是同一件事的两种画法:你在属性区填的"变量名 / 值",切到源代码视图就会变成一行赋值代码。你可以用其中任意一种,另一种会自动同步。
2.1 命名规则(考试常考)
命名规则(考试常考):可以用英文字母、下划线、汉字,还可以用中文命名;首字符之外可以带数字;不区分大小写——abc、ABC、Abc 是同一个变量。推荐取有意义的名字(订单总额 好过 a1)。[2]
- 合法:
数量、订单总额、user_name、a1、count2。 - 不合法或易错:首字符是数字(如
1号)要避免;名字里不要夹空格;变量名本身不用加引号。 - 大小写陷阱:因为你以为的
Name和name是同一个,所以千万别用大小写去区分两个变量——那不会得到两个变量,只会把自己绕晕。
顺带认识"常量":和变量相对的是常量,用 Const 定义,定义后不能再改,且必须有初始值——Const e = 'Laiye' 合法,Const f 会出错。常量适合放"整个流程都不许变"的东西,比如固定的文件路径。初级考试了解即可。
三、四种基础类型
格子里可以放不同形式的东西,这就是"数据类型"。初级认证掌握这四种就够:[1]
3、2.5、261.54
"小明"、'Laiye'
True(真)或 False(假),不区分大小写。
Null,不区分大小写。
3.1 逐个人话解释:什么场合用哪种
| 类型 | 生活里的对应物 | 典型用途 | 怎么判断它 |
|---|---|---|---|
| 数值型 | 身高、金额、数量 | 要参与计算(求和、比大小) | 裸写数字,别加引号 |
| 字符串型 | 姓名、地址、一句话 | 展示、拼接、发出去 | 被一对引号包住 |
| 布尔型 | 开关的"开 / 关" | 记录"成没成功""满没满足条件" | 只有 True / False |
| 空值型 | 一个还没填的空白格子 | 表示"暂时没值""查无此项" | 写作 Null |
易错点:3 和 "3" 不是同一种东西!前者是能算数的数值,后者是被引号包住的文字。把文字当数字去加,或者把数字当文字去拼,都可能出错或得到意外结果——这正是第六节"类型转换"要解决的问题。
还有复合型(数组、字典),那是"格子里再放一排格子",非常有用——我们下一节专门讲,这里先知道有这么回事。
字符串里的转义:\n 是换行,\t 是制表符。想要字符串本身包含引号,用 \"。
四、运算符:算数和拼接
把值和变量用运算符连起来,就是一个表达式,它的值会在运行时才算出来。[2]
| 运算符 | 含义 | 例子 |
|---|---|---|
+ - * / | 加、减、乘、除(数值) | 2 + 3 → 5 |
& | 连接字符串(不是 +) | "小明" & "你好" → "小明你好" |
= | 单独成句时是赋值;在表达式里是判断相等 | a = 3 是赋值;If a = 3 是判断 |
<> | 不相等 | a <> 3 |
4.1 一个符号,两种身份:=
= 是全书最容易看走眼的符号。判断它的身份很简单——看它站在哪:
单独成句(一行只有它)时是"把右边的东西放进左边的格子",即赋值;出现在条件或表达式里时是"问两边是否相等",即判断。第 4 课写 If a = 3 时,它就在问"a 是不是等于 3"。
4.2 表达式:运行时才算值
2 + 3 看起来很简单,但它在代码里不是"5"这个字面结果,而是一张待计算的单子:等你真正运行到这一句,机器才把 2 和 3 加起来。好处是——只要写 数量 + 1,不管 数量 现在是几,运行时都会按当下的值来算。这就是为什么同一个流程能处理不同的数据。
最容易记错的一点:字符串拼接用 &,不是 +。这是 BotScript 的明确设计,考试和写代码都用得上。
五、读一个三行小程序
Dim 姓名 = "小明" // ① 把文字放进"姓名"格子
Dim 数量 = 3 // ② 把数字放进"数量"格子
数量 = 数量 + 1 // ③ 取出、加一、再存回
输出调试信息(姓名 & " 有 " & 数量 & " 个苹果") // ④ 拼接后输出
逐行读:
- 把文字
小明放进变量姓名。 - 把数字
3放进变量数量。 - 取出
数量(3),加 1 得 4,再存回数量。变量就此变成 4。 - 把几段文字拼起来输出,结果:
小明 有 4 个苹果。
第 ③ 行为什么能"自己加自己"?因为等号右边会先算出一个值(3 + 1 = 4),再把这个结果写回左边的格子。记住顺序:先算右边,再存左边。这个模式(x = x + 1)以后在循环里数次数时会反复出现,务必看熟。
动态类型:BotScript 的变量类型会跟着值变。上一行 a 还是数字,下一行写成 a = "你好",它就变成字符串了,不需要事先声明类型。[2]
六、类型转换:让数字和文字拼得起来
如果拼接时数字没被自动转成文字,可用基本命令 转为文字数据 先转换,再拼接。
| 命令 | 作用 | 什么时候用 |
|---|---|---|
转为文字数据 | 把数值等转成字符串 | 要把数字拼进一句话里时 |
转为整数数据 | 把文本等转成整数 | 从界面/表格读来的"数字"其实是文字,要参与计算时 |
Dim 数量 = 3
Dim 文字 = 转为文字数据(数量) // 3 变成 "3"
输出调试信息("共 " & 文字 & " 个") // 拼接安全,结果为:共 3 个
Dim 单价 = 转为整数数据("12") // 文字 "12" 变成整数 12,可参与计算
(说明:可视化视图里这两条是命令块,按命令面板填写属性即可;上面的括号写法是它们在源代码视图里的函数形式,具体以你本机版本的命令面板为准。)
易错点:主动转换,比指望机器"帮我猜"更稳妥。当你不确定一个值到底是什么类型时,先用转换命令把它变成你需要的类型,再拿去计算或拼接——这样报错会更少,逻辑也更清楚。
完整速查见 参考页:BotScript 变量与类型速查。
如果你用的是 Python 流程块,同一个意思这样写——本课的知识点(变量、类型、运算符)一个字都不用改,只是写法变了:
| 要做的 | BotScript(本课程主线) | Python |
|---|---|---|
| 直接赋值 | 数量 = 3 | 数量 = 3(一样) |
| 先声明再赋值 | Dim 数量 = 3 | 不需要 Dim,赋值即声明 |
| 拼接字符串 | "共 " & 数量 & " 个" | "共 " + str(数量) + " 个" |
| 转成文字 | 转为文字数据(数量) | str(数量) |
| 转成整数 | 转为整数数据("12") | int("12") |
| 输出 | 输出调试信息(数量) | print(数量) |
最关键的是"拼接"那一行。BotScript 的 & 会自动把数字变成文字,
所以 "共 " & 3 没问题;Python 的 + 要求两边都是字符串,
"共 " + 3 会直接失败。官方说的"新引擎不支持字符串与数字的直接连接"就是指这个——
两种写法的差别不在"能不能做",而在"要不要你亲手转"。
本课小结
必记要点
- 变量 = 有名字的格子:名字用来找,值用来存;把值放进去叫赋值。
- 赋值两种写法:可视化
基本命令 ▸ 变量赋值;源代码Dim 数量 = 3或数量 = 3(两者同一件事)。 - 命名规则:可用中文、下划线、字母,首字符后可带数字,不区分大小写,建议取有意义的名字。
- 四种基础类型:数值(能算)、字符串(引号包住)、布尔(True/False)、空值(Null);复合型(数组/字典)下一节讲。
- 运算符分工:
+ - * /算数,&拼字符串(不是+);=单独成句是赋值,出现在表达式里是判断相等。 - BotScript 是动态类型:变量类型跟着值变,不用预先声明;不放心就先用转换命令。
自测
不看上面,凭记忆作答。答错不要紧,解析会告诉你为什么。
上机实践(回到 Windows)
任务 A(造格子,8 分钟):新建一个流程块,用命令区的 变量赋值 建两个变量:姓名(填你自己的名字,记得是文字)、年龄(填一个数字,不要加引号)。每加一条,就点一下右边属性区,确认"变量名 / 值"两栏都填对了。期望结果:组装区出现两条赋值命令。
任务 B(拼一句话,8 分钟):再加一条 输出调试信息,输出内容填 姓名 & "今年" & 年龄 & "岁"(属性区里可以用 fx 选变量,不用手打变量名)。单独运行这个流程块。期望结果:输出面板出现"你的名字今年N岁"。若年龄没拼进去,见任务 E。
任务 C(看代码,5 分钟):切换到源代码视图,看看这段代码实际长什么样,把它发给我。你应该会看到 Dim、&、TracePrint 这些东西。对照一下:可视化视图里的两条赋值,在代码里是不是两行 Dim ... = ...?
任务 D(故意制造一个错误,8 分钟):本课重点互动,请认真做并记录。回到属性区,故意把拼接写成 姓名 + 年龄,运行,看报什么错。请把报错信息的第一行原文发我。改回 & 后确认恢复正常——认识报错是认证实操的必备能力。
任务 E(体验动态类型,6 分钟):把 年龄 赋的值从数字 18 改成文字 "18"(加上引号),再运行。观察输出和之前有什么不同;如果报错或结果不对,就改用 转为文字数据 再拼一次。把你的发现发我——这正是"动态类型"和"类型转换"在真实操作里的样子。
任务 F(自由发挥,5 分钟):再加一个布尔变量 已成年,赋值为 True,试着用 & 把它也拼进输出那句话里。拼不进去也没关系,记下你看到的现象,第 4 课条件判断会用到布尔值。
精读一手来源
本节首选:《开发者指南 · 附录:编程基础知识》(专为零基础写的,10 分钟)。重点读"变量"和"数据类型"两处,看看官方的 Excel 比方和本课是不是一致。
想深入语法细节,读 《BotScript 语言参考》 的"变量、常量和数据类型""运算符和表达式"两节——重点找三样:命名规则、& 与 + 的分工、动态类型的说明。