Функция прерывания не работает, если строка elif имеет значение true

#python #if-statement #while-loop #break

Вопрос:

 start = input('Enter quadratic equation: ')
w = start.split()
while len(w) != 7:
    start = input('Enter quadratic equation correctly: ')
    w = start.split()
while x < len(w):
        if "x" in w[x] and '^2' in w[x]:
            a = w[x]
            if a == "x^2":
                a = 1
            else:
                a = a.replace('x^2', '')
                a = int(a)
            if w[x-1] == '-':
                a = a * (-1)
            else:
                a = a
        elif 'x' in w[x] and '^' not in w[x]:
            b = w[x]
            if b == 'x':
                b = 1
            else:
                b = b.replace('x', '')
                b = int(b)
            if w[x-1] == '-':
                b = b * (-1)
            else:
                b = b
        elif w[x].isdigit() and 'x' not in w[x] and w[x] != '0':
            c = w[x]
        elif w[x] == '-' or ' ' or '=':
            s = 0
        elif not w[x].isdigit() and 'x' not in w[x] and w[x] != '-' or ' ' or '=':
            print('Mistake')
            break #Would not this code here work?
        x  = 1  
 

Я пробовал просто делать блок «еще», но все равно это не сработало бы. То, что я пытаюсь сделать, — это проверить, действительно ли входные данные являются квадратным уравнением.

Комментарии:

1. Можете ли вы поделиться тем, как именно вы пишете свое квадратное уравнение ?

2. Пример: 3x^2 12x 13 = 0

Ответ №1:

Неправильное условие заключается elif not w[x].isdigit() and 'x' not in w[x] and w[x] != '-' or ' ' or '=': в том , что он не делает то, что вы хотите/в чем нуждаетесь


Та w[x] != '-' or ' ' or '=': часть :

  • это как (w[x]!='-') or (' ') or ('='):
  • не похоже w[x] != ('-' or ' ' or '='):

Что вы хотите w[x] not in '- =' : и то же самое для предыдущего

     elif w[x] in '- =':
        s = 0
    elif not w[x].isdigit() and 'x' not in w[x] and w[x] not in '- =':
        print('Mistake')
        break
 

Комментарии:

1. Спасибо! Но все равно он не печатает «Ошибка» после того, как я ввожу «а а а а а а а».

2. @EgorK Только что увидел, что предыдущий был неправильным по той же причине, посмотрите мою правку

3. @EgorK Вы можете подумать о том, чтобы проголосовать за ответ, и принять его (зеленая галочка слева), если он вас удовлетворяет 😉