Python循环卡住了吗?

时间:2019-07-01 08:54:43

标签: python loops

我要实现的蛮力搜索应该在值的范围内进行迭代,但是似乎被卡住了。 我理想地希望继续使用for循环

我尝试重新排列for循环并直接使用[Angle,Max_Camber,Max_Camber_Position,Thickness]而不是分配它。

                  . < src2 branch
                  |
                  o src1+2-1.1-1
                  | 
 src1-branch > .  o src1+2-1.1-0
               | /|
               |/ |
     src1-1.1  o  | 
               |  o src1+2-1.0-1
               | /
               |/
     src1-1.0  o

2 个答案:

答案 0 :(得分:0)

当您为翼型分配值时 翼型= [角度,最大弯度,最大弯度位置,厚度] 您实际上更改了迭代的起始位置

以获得749次迭代 将打印的机翼更改为其他名称,例如

Iterations = -1
Current_Max = 0
Airfoil = [0, 1, 1, 10]

for Angle in range(Airfoil[0],90,15):   
    for Max_Camber in range(Airfoil[1],11,2):
        for Max_Camber_Position in range(Airfoil[2],11,2):
            for Thickness in range(Airfoil[3],100,20):

                Iterations+=1
                print("Iterations = ",Iterations)
                Airfoil2 =[Angle,Max_Camber,Max_Camber_Position,Thickness]
                print("Airfoil = ",  Airfoil2)

这将起作用

答案 1 :(得分:0)

在打印列表之前,应使用其他变量名称创建列表。您还可以使用Python的product()函数,该函数有助于避免深层嵌套的for循环来精确地执行您正在做的事情,例如:

from itertools import product

Iterations = -1
Current_Max = 0
Airfoil = [0, 1, 1, 10]

for Angle, Max_Camber, Max_Camber_Position, Thickness in product(
    range(Airfoil[0], 90, 15), range(Airfoil[1], 11, 2), 
    range(Airfoil[2], 11, 2), range(Airfoil[3], 100, 20)):

    Iterations += 1
    print("Iterations = ", Iterations)

    Airfoil2 = [Angle, Max_Camber, Max_Camber_Position, Thickness]
    print("Airfoil = ",  Airfoil2)