繁体   English   中英

Python - 使用while循环返回顶部循环

[英]Python - Back to the top loop with while loop

我正在编程4参数RAINFLOW方法。 因此,想法是从负载历史记录中获得由4个要求定义的标准加载周期,通常由几千个,10000个甚至更多的点(作用时间)组成。 在此负载历史记录中,您需要寻找2个标准周期,一个上升周期和一个下降周期 这里的例子 两者均在图片中显示。 您总是从头开始,并尝试找到一个循环,如果您没有从头开始获得成功,则向上移动一个点(j = j + 1),然后重新开始。 一旦找到一个循环,就删除第二和第三点(y1和y2)并从头开始。

我以这样的方式做了alghoritm,它首先确定负载历史的第二个点是否从第一个或更低的位置开始,以便它知道首先查看哪个周期(从哪里开始)。 从那里开始它只是搜索需求,也在图片中列出。

我的问题:我想以这样的方式编程:如果找到2个循环中的非循环,程序将向j添加+1并再次从顶部开始并且将这样做直到找到循环。 我确实使用了while循环,并尝试使用true / false进行操作,但这确实没有用。 什么都没发生......如果某人有想法。

y只是随机点向量的一个简短示例。

y = [0.00, 2.00, 4.00, 5.00, 5.50, 6.00, 5.00, 4.00, 3.20, 3.50, 4.00, 4.50,   4.70, 4.80, 5.00, 4.50, 4.30, 4.00, 3.00, 2.00, 1.00, 
 1.50, 2.50, 4.00, 4.50, 2.50, 1.50, 0.50, 0.30, 2.50, 3.00, 1.50, 2.00, 2.50, 5.00, 5.50, 6.00, 6.20, 5.50, 3.00]


a = []
for j in range(len(y)):
while j<(len(y)-4):
    if y[j+1] > y[j]:
        while False:
            if y[j+2] >= y[j] and y[j+3] >= y[j+1]:
                True 
                a.append(y[j+1])                
                del y[j+1]
                a.append(y[j+1])                
                del y[j+1]
            else:
                j = j+1
                if y[j] >= y[j+2] and y[j+1]>= y[j+3]:
                    stavek = True
                    a.append(y[j+1])                    
                    del y[j+1]
                    a.append(y[j+1])                    
                    del y[j+1]
                else:
                    j=j+1
                    False

    elif y[j+1] < y[j]:
        while False:
            if y[j+2] <= y[j] and y[j+3] <= y[j+1]:                    
                a.append(y[j+1])
                del y[j+1]
                a.append(y[j+1])
                del y[j+1]
            else:
                j = j+1
                if y[j] <= y[j+2] and y[j+1]<= y[j+3]:
                    stavek = True
                    a.append(y[j+1])
                    del y[j+1]
                    a.append(y[j+1])
                    del y[j+1]
                else:
                    j=j+1
                    False

while False将永远不会执行,因为不满足条件。 也许您应该查看do - > while因此它至少运行一次,并引入一个新变量,您将设置为true或false以继续循环。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM