题目:A+B
题意
从标准输入读入一行两个整数 a 和 b(空格分隔),输出它们的和。
思路
RGC 的输入输出套路是四步:读入→ 按空白切分 → 逐个转整数 → 计算输出。
关键点:.to_int() 返回的是 Result,不是整数
"abc".to_int() 是合法调用但会失败,所以 .to_int() 返回 Result<int, string>,必须 .unwrap() 才能拿到整数:
a = tokens.get(0).to_int().unwrap()
b = tokens.get(1).to_int().unwrap()
如果省略 .unwrap() 直接 a + b,实际是在给两个 Result 相加。这个错误类型检查目前拦不住,会一直拖到代码生成阶段才失败,报出没有行列号的 error[E0004]: codegen failed. —— 看到它先检查是不是漏了 .unwrap()。
完整代码
import string
def main() {
# 一次读入全部标准输入
text = input().unwrap()
# 按空白切分
tokens = string.split(text)
# .to_int() 返回 Result,加 .unwrap() 才是整数
a = tokens.get(0).to_int().unwrap()
b = tokens.get(1).to_int().unwrap()
# 输出它们的和
print(a + b)
}
实测输入 3 4,输出 7,用时 5ms、内存 1.6MiB。
常见错误速查
| 现象 |
原因 |
error[E0004]: codegen failed. |
对 to_int() 的返回值直接运算,漏了 .unwrap() |
error[E0501]: use of undeclared variable string |
忘了 import string |
error[E0502] |
写成裸函数 split(text);它是 string 模块函数,要写 string.split(text) |
复杂度
时间与空间均为 O(1)。