Цикл Python застревает? - PullRequest
0 голосов
/ 01 июля 2019

Поиск методом грубой силы, который я пытаюсь реализовать, должен повторяться в диапазоне значений, но, похоже, он застрял. В идеале я хотел бы продолжать использовать для циклов

Я попытался переупорядочить циклы for и использовать [Angle, Max_Camber, Max_Camber_Position, Thickness] напрямую, вместо того, чтобы назначать его.

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)

                # Commenting this out stops the error
                # The loop should have 749 iterations rather than 17
                Airfoil =[Angle,Max_Camber,Max_Camber_Position,Thickness]
                print("Airfoil = ",  Airfoil) 

Ответы [ 2 ]

0 голосов
/ 01 июля 2019

Вы должны использовать другое имя переменной для создания списка перед его печатью. Вы также можете использовать функцию 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) 
0 голосов
/ 01 июля 2019

при назначении аэродинамического профиля со значением Аэродинамическая поверхность = [Угол, Макс. Камера, Макс. Камера, положение, толщина] вы фактически изменили начальную позицию итерации

чтобы получить 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)

это будет работать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...