用三引号多行字符串保存字符画,并原样输出。
OJ: luogu
题目 ID: P1000
难度:入门
标签:python入门字符串输出
日期: 2026-07-15 17:50
题意
题目没有输入,要求输出一整块固定的超级玛丽字符画。每一行的空格、#、.、*、- 都属于答案的一部分。
思路
这题不是算法题,核心是学习“按题目格式精确输出”。如果一行一行 print,很容易漏掉前导空格;更稳的做法是把整块字符画放进三引号字符串中,再一次性输出。
brute.py 不适合这题,因为不存在需要枚举或优化的算法过程。验证重点是最终输出是否和标准输出完全一致。
Python 知识
- 三引号字符串
"""..."""可以保存多行文本,适合固定字符画。 - 字符串里的前导空格会被保留,所以代码中字符画每行的缩进不能随便调整。
sys.stdout.write(scene)直接输出字符串,不会额外添加换行;字符串本身最后已经包含换行。
对应的本地 Python 笔记:
/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
import sys
scene = """ ********
************
####....#.
#..###.....##....
###.......###### ### ###
........... #...# #...#
##*####### #.#.# #.#.#
####*******###### #.#.# #.#.#
...#***.****.*###.... #...# #...#
....**********##..... ### ###
....**** *****....
#### ####
###### ######
##############################################################
#...#......#.##...#......#.##...#......#.##------------------#
###########################################------------------#
#..#....#....##..#....#....##..#....#....#####################
########################################## #----------#
#.....#......##.....#......##.....#......# #----------#
########################################## #----------#
#.#..#....#..##.#..#....#..##.#..#....#..# #----------#
########################################## ############
"""
sys.stdout.write(scene.rstrip("\n"))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() {
// 使用原始字符串 R"(...)" 保留所有空格和换行,直接输出超级玛丽字符画
cout << R"( ********
************
####....#.
#..###.....##....
###.......###### ### ###
........... #...# #...#
##*####### #.#.# #.#.#
####*******###### #.#.# #.#.#
...#***.****.*###.... #...# #...#
....**********##..... ### ###
....**** *****....
#### ####
###### ######
##############################################################
#...#......#.##...#......#.##...#......#.##------------------#
###########################################------------------#
#..#....#....##..#....#....##..#....#....#####################
########################################## #----------#
#.....#......##.....#......##.....#......# #----------#
########################################## #----------#
#.#..#....#..##.#..#....#..##.#..#....#..# #----------#
########################################## ############)";
return 0;
}复杂度
字符画长度是固定的,时间复杂度和空间复杂度都可以看成
总结
固定输出题训练的是格式意识:不要输出提示语,不要改动题目要求的空格和换行。Python 中三引号字符串很适合保存这种固定的多行答案。
