读入以 0 结尾的整数序列,删除结尾标记后反转列表并输出。
OJ: luogu
题目 ID: P1427
难度:入门
标签:模拟列表python
日期: 2026-07-15 18:44
题意
输入一串整数,最后一个 0 表示结束标记,不属于要输出的数字。要求把前面的数字倒序输出。
思路
这一题可以直接把整行读成列表。
因为题目保证只有末尾一个 0,所以:
- 用
numbers.pop()删除最后的0; - 用
numbers.reverse()原地反转列表; - 用
print(*numbers)输出。
这题主要训练列表的删除、反转和展开输出,不创建额外 brute.py。
Python 知识
/home/rainboy/mycode/hugo-blog/content/program_language/python/input_output_and_strings.md:用list(map(int, input().split()))读取整行整数。/home/rainboy/mycode/hugo-blog/content/program_language/python/oj_input_output_cheatsheet.md:整行整数且换行无特殊意义时,可以直接按空白切分。numbers.pop()删除并返回列表最后一个元素。numbers.reverse()原地反转列表。print(*numbers)按空格输出列表内容。
代码
python
numbers = list(map(int, input().split()))
numbers.pop()
numbers.reverse()
print(*numbers)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 a[105]; // 存储输入的数字(不含末尾的 0)
int n; // 数字个数
int main() {
int x;
// 读到 0 为止,0 不存入数组
while (cin >> x) {
if (x == 0) break;
a[++n] = x;
}
// 倒序输出
for (int i = n; i >= 1; i--) cout << a[i] << " ";
return 0;
}Pythonic 写法
切片反向:
python
print(*list(map(int, input().split()))[-2::-1])复杂度
设输入数字个数为 n。反转和输出都是
总结
这题是典型的列表操作练习。先去掉结束标记,再反转真正的数据,逻辑会很清楚。