一假期,小M出去爬山,爬山的过程中每隔10米他都会记录当前点的海拔高度(以一个浮点数这些值序列保存在一个由浮点数组成的列表h中。 回到家中,小M想研究一下自己经过了几个山峰,请你帮他计算一下,输出结果。 例如:h=[0.9.1.2,1.22,1.1,1.6,0.99],将这些高度顺序连线,会发现有两个山峰,山峰的特点是比前一位大,并且比后一位的也大(序列两端不算山峰),根据这个要求,故输出:2(序列两端不算山峰)请编写程序实现该功能
时间: 2023-07-16 13:16:04 浏览: 84
编写程序实现以下功能:从键盘输入十个整数,用冒泡法排序后按从小到大输出
可以使用一个变量记录当前是否处于上升的状态,如果当前状态为下降,且前一个状态为上升,则说明找到了一个山峰,山峰数量加1。
代码如下:
```python
def count_peaks(h):
peaks = 0 # 山峰数量
is_up = False # 是否处于上升的状态
for i in range(1, len(h)-1): # 序列两端不算山峰
if h[i] > h[i-1] and h[i] > h[i+1]: # 找到了一个山峰
peaks += 1
if h[i] > h[i-1]: # 当前处于上升的状态
is_up = True
elif h[i] < h[i-1] and is_up: # 当前处于下降的状态,并且前一个状态为上升
is_up = False # 下降的状态
return peaks
```
测试一下:
```python
h = [0.9, 1.2, 1.22, 1.1, 1.6, 0.99]
print(count_peaks(h)) # 输出 2
```
阅读全文