一、题目背景
在一组整数里,有一种特殊的数:
✅ 不在第一个,也不在最后一个
✅ 刚好比左边、右边相邻的数都大
我们把这种数叫做支撑数,一起来用 Python 把它们找出来吧!
二、题目信息
输入
- 第一行:整数
m(表示整数个数,3 ≤ m ≤ 100)
输出
找到的每个支撑数,每行输出一个。
三、解题思路(超通俗版)
- 先读入数据
- 确定遍历范围
- 判断条件
- 输出结果
四、完整代码(可直接复制运行)
# 1. 读取输入数据m = int(input("请输入整数的个数:"))nums = list(map(int, input("请输入这些整数,用空格隔开:").split()))# 2. 遍历数组,找出支撑数print("找到的支撑数:")for i in range(1, m - 1): # 从第2个到倒数第2个元素 left = nums[i-1] current = nums[i] right = nums[i+1] if current > left and current > right: print(current)
五、代码分步拆解(小白友好)
① 读取输入
m = int(input()) # 读取数字个数nums = list(map(int, input().split())) # 把输入的字符串转成整数列表
小提示:map(int, ...)会把输入的每个字符串转成整数,list()把它们变成列表,方便后续操作。
② 遍历中间元素
for i in range(1, m - 1):
- 列表索引从
0开始,所以第一个元素索引是0,最后一个是m-1 range(1, m-1)表示从索引1(第二个元素)到m-2(倒数第二个元素),刚好跳过首尾
③ 判断支撑数
left = nums[i-1]current = nums[i]right = nums[i+1]if current > left and current > right: print(current)
- 用变量
left和right分别存左右邻居,代码更易读
六、运行示例
输入
输出
解析:
七、易错点提醒
- 遍历范围错误
- 索引越界:
range的结束位置是m-1,所以循环里的i最大是m-2,避免nums[i+1]超出列表长度 - 条件写反:一定要是
current > left且current > right,别写成小于哦