Цикл while for for - цикл For не проходит через все элементы - PullRequest
0 голосов
/ 26 сентября 2019

У меня есть цикл while с циклом for.Цикл for выполняет итерацию всех значений vel, а цикл while вычисляет эквивалентное значение b для каждого значения vel.Это происходит путем увеличения значения b до тех пор, пока оно не будет соответствовать определенному требованию (len([*filter(lambda x: x < 1, radii)]) > 0) в другом наборе кода.Когда я запускаю код, он определяет только значение b для первого элемента в списке vel.Как я могу это исправить?

def wtf():
    vel = np.arange(0, 1, 0.01)
    b = 0.1
    bvalues = [b]
    for i in vel:
        print("for velocity = " +str(i))
        radii = calcCoords(1, b, i)[1]
        while len([*filter(lambda x: x < 1, radii)]) > 0:
            b += 0.01
            radii = calcCoords(1, b, i)[1]
            print (b)
        return(b)
        bvalues.append(b)
    print(bvalues, vel)
    return (bvalues, vel)

1 Ответ

1 голос
/ 26 сентября 2019

У вас есть безусловный возврат в теле цикла for.

def wtf():
    vel = np.arange(0, 1, 0.01)
    b = 0.1
    bvalues = [b]
    for i in vel:
        print("for velocity = " +str(i))
        radii = calcCoords(1, b, i)[1]
        while len([*filter(lambda x: x < 1, radii)]) > 0:
            b += 0.01
            radii = calcCoords(1, b, i)[1]
            print (b)
        return(b)  # <- This is why the for loop runs only once
        bvalues.append(b)
    print(bvalues, vel)
    return (bvalues, vel)

Как только цикл while запускается один раз, он достигает return, а остальные итерации for не запускаются - ваша функция возвращает.

...