综合练习册 · 参考答案
配套练习册(47 题)。做完再看,点开每题看解析。
答案只是"一个正确解",尤其写代码的题往往有多种写法。对不上不要紧,关键是逻辑对不对、有没有在 APA Creator 里跑通。
A1创建并赋值"姓名"
看答案
Dim 姓名 = "张三"
姓名 = "张三" // 也可以不声明直接赋值
A2abc 和 ABC 是两个变量吗?
看答案
错。BotScript 的关键字、变量名、函数名均不区分大小写,abc、ABC、Abc 是同一个变量。
A3四个值的类型
看答案
42 数值型;"42" 字符串型(有引号);True 布尔型;Null 空值型。
A4拼接表达式
看答案
"总计:" & 合计
字符串连接用 &,不是 +。
A5哪些是合法变量名?
看答案
合法:_count、统计、Count。
不合法:2count(首字符不能是数字)、count-1(不能含减号)。另外注意 Count 与 count 是同一个变量。
A6让数量从 3 变 4
看答案
数量 = 数量 + 1
A7字符串只能用双引号?
看答案
错。单引号和双引号都可以,例如 'Laiye' 和 "Laiye" 都合法。
A8常量
看答案
关键字 Const。不能改——常量只能在定义时赋值一次,之后修改会报错。
B1及格判断
看答案
If 分数 >= 60
输出调试信息("及格")
Else
输出调试信息("不及格")
End If
关键:没有 Then。这是最容易按 VB 习惯写错的地方。
B2两个条件同时成立会走几个分支?
看答案
一个——从上往下第一个为真的分支执行,后面的不再检查。
B3两种 =
看答案
a = 3 独立成句时是赋值;If a = 3 里出现在表达式中,是判断相等。
B4输出 1~5
看答案
For i = 1 To 5
输出调试信息(i)
Next
循环变量 i 不用 Dim 定义。
B5For i = 10 To 1 循环几次?
看答案
0 次。起始值 10 一开始就大于结束值 1,条件不满足,循环体一次都不执行。步长默认为正数 1,所以不会倒着数。
B6后置判断至少几次?
看答案
至少一次。条件写在 Loop 后面,属于后置判断:先执行一遍循环体,再去判断条件。
B7Continue vs Break
看答案
Continue:结束本次循环,直接开始下一轮。Break:立即跳出整个循环。
B8重试到成功
看答案
Do Until 找到 = True
重试相关的命令
Loop
等价写法:Do While 找到 = False ... Loop。注意循环里必须有机会让 找到 变成 True,否则就是死循环。
C130 的下标
看答案
2。下标从 0 开始:10→0、20→1、30→2。
C2取字典里的 1
看答案
字典["a"]
C3字典的键可以是数字吗?
看答案
不可以。字典的键只能是字符串;值可以是任意类型。
C4遍历名单
看答案
Dim 名单 = ["张三", "李四"]
For Each 名字 In 名单
输出调试信息(名字)
Next
C5b = a 后改 b,a 会变吗?
看答案
会变。数组/字典赋值只是取别名(引用同一份数据),不是复制副本。想要互不影响,得用"复制"相关命令。
C6文本转数组
看答案
用 分割字符串。属性填:目标字符串 "a,b,c"、分隔符 ","。输出即数组 ["a","b","c"]。
D1Excel 三个概念
看答案
一个文件 = 一个工作簿;包含多个工作表(默认 Sheet1/2/3);一格叫单元格。
D2读取区域的结果结构
看答案
二维数组(外层按行,内层按列)。
D3工作表 0 与单元格 [2,3]
看答案
工作表整数编号从 0 开始,所以第一张是 0。[2, 3] = 第 2 行第 3 列 = 地址 C2(行列都从 1 开始)。
D4没保存,改动还在吗?
看答案
不在。改动只在内存里。需要把"立即保存"设为"是",或另外调用 保存Excel(或关闭时保存)。
D5写 2×2 区域要什么数据
看答案
二维数组,形如 [["a","b"], ["c","d"]]:外层 2 行,每行长度 2。
D6读取文档能读到什么
看答案
只能读到文字内容。不支持读取文字格式,也不支持读表格状态和图片。
D7模板精确填充三步
看答案
① 模板里在需要填的地方写特殊标记(如 $姓名$);② 用 查找文本后设置光标位置 找到该标记,相对位置选"选中文本";③ 用 写入文字 替换成真实内容。
好处:不依赖行号/字符数,绕开 Word 隐藏格式导致的焦点偏位。
D8SMTP 密码栏填什么
看答案
填授权码。邮箱开启 POP3/SMTP 服务时会生成一串授权码,机器人登录用它;填邮箱原密码会认证失败。
D9POP 删除后还要做什么
看答案
调用 断开邮箱连接,删除才真正生效。(若服务器设置了禁止收信软件删除邮件,则仍删不掉。)
D10POP / IMAP / SMTP 分工
看答案
支持移动邮件的是 IMAP;只负责发邮件的是 SMTP;POP3 只负责收。
E1有目标 / 无目标命令找不到元素时
看答案
有目标:反复查找,超过"超时时间"后抛异常,流程停止。
无目标:不查找也不校验,鼠标/键盘在哪就操作哪,无法验证对错。
E2漏选
看答案
叫漏选。原因通常是元素特征里某个属性会变化(例如单元格文字的 aaname 每次刷新都变)。
修法:把该属性的值改成通配符 *(如 "姓名:*"),或取消勾选该属性。
E3错选
看答案
叫错选。常发生在特征几乎一模一样的兄弟元素之间——剔掉区分属性后,它就找到第一个符合的。
E4为什么错选更危险
看答案
漏选会抛异常、流程立刻停下并报错,容易发现;错选时流程照常往下跑,错误悄无声息,可能产出错误结果也没人知道。
E5界面库共享范围
看答案
同一条流程的不同流程块之间共享;不同流程之间不共享。
E6Chrome 扩展与推荐浏览器
看答案
Chrome 要先安装并启用扩展(Laiye Native Message Plugin),否则只能选到整个页面。
官方更推荐内置的来也浏览器(Laiye Browser):免装扩展、能选取跨域网页元素、可直接调用页面内 JavaScript。
E7比"延时 5 秒"更稳的做法
看答案
用 等待元素(或 判断元素是否存在 配合循环)。
理由:固定延时要么网页快时白等、浪费时间,要么网页慢时还没加载完就操作;等待元素是"元素真出现/真消失"才继续,既稳又快。
F1多了一个关键字
看答案
多了 Then。BotScript 的 If 不写 Then:
If 分数 >= 60
输出调试信息("及格")
End If
F2下标越界
看答案
数组只有 3 个元素,合法下标是 0、1、2,没有 3。要取"王五"应写 名单[2]。
F3循环变量用到了循环外
看答案
计次循环的循环变量在循环结束后不能再用。把输出移到循环内,或在循环前自己 Dim 一个计数变量、在循环里累加。
F4别名陷阱
看答案
b = a 只是取别名,两者指向同一份数组,改 b[0] 就是改 a[0],所以输出 99。
想得到独立副本,用数据处理里的"复制"相关命令,而不是直接赋值。
F5累加变量没初始化
看答案
合计 没有初始值,累加结果不可靠(且会有未定义警告)。应先给初值:
Dim 合计 = 0
For Each 天 In 天数
合计 = 合计 + 天
Next
F6少了 End If
看答案
两个 If 只配了一个 End If。内层也要有自己的结束标记:
If i = 1
If j = 2
输出调试信息("都满足")
End If
End If
F7死循环
看答案
条件永远为真,循环体里既不改变量也没有 Break,流程永远卡住。修法:加 Break,或让条件最终能变成假。
F8拼接用错符号
看答案
字符串拼接要用 &,不是 +:
名称 = "订单" & 编号
若担心数字没被自动转成文字,可先用 转为文字数据 命令转换再拼接。
怎么用结果定位问题
| 出错集中在 | 说明 | 回去重做 |
|---|---|---|
| A / B 级 | 语法地基不稳,后面的都会受影响 | 第 3 课 + 第 4 课 + 第 5 课 的上机任务 |
| C 级 | 数组/字典没吃透,Office 部分会跟着错 | 第 6 课 |
| D 级 | 命令属性记不牢,属正常,多查速查页 | Excel/Word/Email 速查 |
| E 级 | 元素识别靠经验,建议在练习场的虚拟台账上多练 | 第 10 课 + 虚拟台账 |
| F 级错一半以上 | "读懂了"但"没写熟",正常现象 | 两个综合项目的对应关卡 |