python - while 循环中有两个 False
问题描述
我想要一个可以帮助我编写 python 代码的人。在这种情况下,我正在寻找左右站点的峰值。
我想那个h[x+1] < h[x]
时候x = x-1
和summit=False
。我正在尝试编写第二个循环,但此解决方案不起作用。
下面是我的代码:
import math
import random
w = [random.random()/3, random.random()/3, random.random()/3]
h = [1.+math.sin(1+x/6.)*w[0]+math.sin(-.3+x/9.)*w[1]+math.sin(-.2+x/30.)*w[2] for x in range(100)]
h[0] = 0.0; h[99] = 0.0
print(h)
def climb(x, h):
# keep climbing until we've found a summit
summit = False
# edit here
while not summit:
summit = True
if h[x + 1] > h[x]:
x = x + 1
summit = False
else:
if h[x + 1] < h[x]:
x = x - 1
#summit = False
#summit = False
return x
def main(h):
# start at a random place
x0 = random.randint(1, 98)
x = climb(x0, h)
print("Venla started at %d and got to %d" % (x0, x))
return x0, x
main(h)
解决方案
不自己处理索引计数可能会更容易,但让enumerate
您为自己做这件事。然后遍历所有值并在找到满足要求的值时离开函数。
def climb(x, h):
for idx, value in enumerate(h):
if h[idx-1] < value and value > h[idx+1]:
return idx
没有边界检查,所以我们假设可以在数据中找到一个顶点。
推荐阅读
- delphi-10.2-tokyo - Delphi 10.2 在启动时崩溃:“最近的项目”存储在哪里?
- powershell - 在电子邮件中包含来自 Write-Output 的输出?
- flutter - 列表
在 Flutter 中动态地在行和行中 - sorting - 在 Vue 中按子计算属性对数组进行排序
- database - IBM Data Client 服务器的静默安装
- microsoft-cognitive - 从人脸检测 API 管理用户数据
- https - NGINX 作为反向代理 - 转发不起作用
- r - Rtsne 函数仅读取我的数据集的一部分
- swift - Swift 条件符合泛型类型
- php - 未找到 Opencart 自定义控制器功能