把 14 个固定问题的答案整理成字典,根据输入编号输出对应文本。
OJ: luogu
题目 ID: P2433
难度:入门
标签:python入门分支输出
日期: 2026-07-15 18:02
题意
输入一个题号 T,范围是 1..14。每个题号对应一道固定的小学数学题,程序只需要输出对应答案。
思路
这题可以写很长的 if/elif。但这些答案都是固定文本,用字典保存会更清楚:
- 键是题号;
- 值是要输出的答案字符串;
- 多行答案直接在字符串中写
\n。
读入 T 后输出 answers[T] 即可。
brute.py 不适合这题,因为它是固定答案分支题,不存在需要验证的优化算法。
Python 知识
- 字典
{1: "...", 2: "..."}可以把题号映射到答案。 - 字符串中的
\n表示换行,适合保存多行输出。 answers[t]根据输入编号取出对应答案。print(text, end="")可以避免额外追加最后一个换行,便于精确匹配固定输出。
对应的本地 Python 笔记:
/home/rainboy/mycode/hugo-blog/content/program_language/python/collections_toolkit.md:普通字典保存键到值的映射。/home/rainboy/mycode/hugo-blog/content/program_language/python/input_output_and_strings.md:字符串、多行输出和输入解析。/home/rainboy/mycode/hugo-blog/content/program_language/python/oj_input_output_cheatsheet.md:按题面控制输出格式。
代码
python
answers = {
1: "I love Luogu!",
2: "6 4",
3: "3\n12\n2",
4: "166.667",
5: "15",
6: "10.8167",
7: "110\n90\n0",
8: "31.4159\n78.5398\n523.599",
9: "22",
10: "9",
11: "33.3333",
12: "13\nR",
13: "16",
14: "50",
}
t = int(input())
print(answers[t], end="")cpp
/**
* Author by Rainboy blog: https://rainboylv.com github: https://github.com/rainboylvx
* rbook: -> https://rbook.roj.ac.cn https://rbook2.roj.ac.cn
* rainboy的学习导航网站: https://idx.roj.ac.cn
* create_at: 2026-07-27 00:00
* update_at: 2026-07-27 00:00
*/
#include <bits/stdc++.h>
using namespace std;
int main() {
int T; // 题号 1~14
cin >> T;
// 根据题号 switch 分支输出对应答案
switch (T) {
case 1: cout << "I love Luogu!"; break;
case 2: cout << "6 4"; break;
case 3: cout << "3\n12\n2"; break;
case 4: cout << "166.667"; break;
case 5: cout << "15"; break;
case 6: cout << "10.8167"; break;
case 7: cout << "110\n90\n0"; break;
case 8: cout << "31.4159\n78.5398\n523.599"; break;
case 9: cout << "22"; break;
case 10: cout << "9"; break;
case 11: cout << "33.3333"; break;
case 12: cout << "13\nR"; break;
case 13: cout << "16"; break;
case 14: cout << "50"; break;
}
cout << endl;
return 0;
}Pythonic 写法
match-case:
python
t = int(input())
match t:
case 1:
print("I love Luogu!", end="")
case 2:
print("6 4", end="")
case 3:
print("3\n12\n2", end="")
case 4:
print("166.667", end="")
case 5:
print("15", end="")
case 6:
print("10.8167", end="")
case 7:
print("110\n90\n0", end="")
case 8:
print("31.4159\n78.5398\n523.599", end="")
case 9:
print("22", end="")
case 10:
print("9", end="")
case 11:
print("33.3333", end="")
case 12:
print("13\nR", end="")
case 13:
print("16", end="")
case 14:
print("50", end="")match-case 写法
题号是离散分支,用 match-case 按编号分发同样清晰:
python
t = int(input())
match t:
case 1:
print("I love Luogu!", end="")
case 2:
print("6 4", end="")
case 3:
print("3\n12\n2", end="")
case 4:
print("166.667", end="")
case 5:
print("15", end="")
case 6:
print("10.8167", end="")
case 7:
print("110\n90\n0", end="")
case 8:
print("31.4159\n78.5398\n523.599", end="")
case 9:
print("22", end="")
case 10:
print("9", end="")
case 11:
print("33.3333", end="")
case 12:
print("13\nR", end="")
case 13:
print("16", end="")
case 14:
print("50", end="")复杂度
字典大小固定,查询一次即可,时间复杂度
总结
当题目是“编号 -> 固定答案”时,字典比很长的分支更容易检查。多行答案可以直接保存在字符串中,输出时不要再手动拼很多 print。