Я пишу код, основанный на некоторых формулах, но мой оператор if, кажется, не работает (строка 33) - PullRequest
0 голосов
/ 04 мая 2020
W = int(input('Enter weight:'))

b = [1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0]
AR = [1, 2, 3, 4, 5]
T = [50.99238, 50.05062, 49.07943, 48.05919, 47.00952, 45.92061, 44.79246, 43.62507,       42.42825, 41.18238, 39.90708, 38.60235, 37.24857, 35.86536, 34.4331, 32.97141, 31.48029, 29.94012, 28.37052, 26.76168, 25.1136]
CL = [1.0]
CD = [0.5]
clmax = 2
n = 0
z = 0
while b[n] < 2.1 :

    while AR[z]< 5.1:
        cl = CL[n]
        cd = CD[z]
        s = ((b[n]*b[n])/AR[z])                                
        V = ((2*W*9.81)/(1.2*s*clmax) ** 0.5)*1.1
        vlof = V/1.41
        Vlof = round(vlof)
        D = 0.5*cd*1.2*Vlof*Vlof*s
        L = 0.5*cl*1.2*Vlof*Vlof*s
        a = (9.81/W)*(T[Vlof]-D-O.O5(W-L))
        Sg = (V*V)/(2*a)
        if Sg <= 30:
            print('IT WILL TAKEOFF')
        else:
            print('It will NOT takeoff')
        t/c = int(input('t/c ratio is:'))
        l = int(input('Taper ratio is:'))
        f = 0.005(1+1.5*((l-0.6)**2))
        e = (1/((1+0.12*V*V*0.003*0.003)(1+(0.142+(f*AR[z]*(10*t/c)**0.33)
            +(0.1/(4+AR[z])**0.8))
        if z <= 5:                              # line 33 #
                                     z +=1
        else :
                                     break

   n+=1                

ВЫХОД:

  File "<ipython-input-49-d7d52927efb2>", line 33
    if z <= 5:
         ^
SyntaxError: invalid syntax

Это код, который должен сказать мне, будет ли мой самолет взлетать или нет (при вводе веса). Я не могу понять причину, почему это неверный синтаксис?

1 Ответ

0 голосов
/ 04 мая 2020

В указанном вами коде есть несколько ошибок. Я пытался убрать это как можно лучше. Следующее не вызывает ошибку по умолчанию. Это не означает, что код делает то, что должен. Вы все еще должны это проверить.

Ваши списки, такие как CL и CD, не содержат достаточно элементов для большинства случаев, что приведет к IndexError: list index out of range. Вы должны расширить эти списки или использовать другой тип логики c, чтобы этого не произошло.

W = int(input('Enter weight:'))

b = [1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0]
AR = [1, 2, 3, 4, 5]
T = [
    50.99238, 50.05062, 49.07943, 48.05919, 47.00952, 45.92061, 44.79246,
    43.62507, 42.42825, 41.18238, 39.90708, 38.60235, 37.24857, 35.86536,
    34.4331, 32.97141, 31.48029, 29.94012, 28.37052, 26.76168, 25.1136
]
CL = [1.0]
CD = [0.5]
clmax = 2
n = 0
z = 0
while b[n] < 2.1:

    while AR[z] < 5.1:
        cl = CL[n]
        cd = CD[z]
        s = ((b[n]*b[n])/AR[z])                                
        V = ((2*W*9.81)/(1.2*s*clmax) ** 0.5)*1.1
        vlof = V/1.41
        Vlof = round(vlof)
        D = 0.5*cd*1.2*Vlof*Vlof*s
        L = 0.5*cl*1.2*Vlof*Vlof*s
        # O.O5 -> 0.05*: you used the letter 'O' instead of '0' (zero). also
        # you always have to use * if you want to multiply something. you
        # cannot leave it out.
        a = (9.81/W)*(T[Vlof]-D-0.05*(W-L))
        Sg = (V*V)/(2*a)
        if Sg <= 30:
            print('IT WILL TAKEOFF')
        else:
            print('It will NOT takeoff')
        # t/c -> t_c: you cannot use special characters when defining
        # variables. best stick to lower- and upper-case letters,
        # the underscore and numbers.
        t_c = int(input('t/c ratio is:'))
        l = int(input('Taper ratio is:'))
        # a whole lot of closing parentheses and '*' were missing here. also
        # cleaned up the formatting
        f = 0.005*(1+1.5*((l-0.6)**2))
        e = (
            1 / (
                (1+0.12*V*V*0.003*0.003)*(
                    1 + (
                        0.142+(f*AR[z]*(10*t_c)**0.33)
                        + (0.1/(4+AR[z])**0.8)
                    )
                )
            )
        )
        # in Python, space has meaning. it determines which part of the code
        # is executed at which level in the routine. you cannot chose it 
        # arbitrarily.
        if z <= 5:
            z += 1
        else:
            break
    n += 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...