В то время как цикл продолжает выполняться после выполнения условия

#python

Вопрос:

Я пытаюсь сделать простой калькулятор с помощью Python.

Я хочу, чтобы пользователь написал «и», а затем цикл while должен закончиться. Когда я запускаю его и набираю случайный текст, цикл while работает и говорит «повторите попытку». Однако, когда я на самом деле ввожу правильный ответ («добавить»), цикл while не заканчивается — вместо этого он продолжает говорить «попробуйте еще раз».

Почему это происходит? Что не так с моим кодом?

 input('Welcome! This is a calculator app that allows you to perform basic arithmetic operations with whole and decimal numbers. Press Enter to continue.')

operation = input('Please pick one of the following operations: Multiply, Add, Divide or Subtract ')

while True:
    if operation != 'add':
        input('Please try again: ')
    else:
        print('All good')
        break
 

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

1. пожалуйста, отформатируйте свой код в блоке кода, выделив его и нажав кнопку {}

2. while цикл не прервется, так как вы не сохраняете новые входные данные в operation переменной

3. Ознакомьтесь с учебным пособием , чтобы узнать о переменных и входных данных

4. Цикл должен иметь возможность считывать вводимые значения.

5. Вы не переназначаете ввод «повторите попытку operation » внутри цикла. Кроме того , вы можете упростить условия: while operation != 'add': , отбросить if и распечатать все хорошее после этого цикла.

Ответ №1:

Хорошо, так что смотри сюда:

 if operation != 'add':
    input('Please try again:')
 

Этот код позволяет пользователю только что-то вводить, но где?
Нам нужно ввести значение операции.

 if operation != 'add':
    operation = input('Please try again:')
 

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

1. не могли бы вы, пожалуйста, подробнее рассказать об этом. Например, почему мне нужно было назначить ввод «Повторная попытка» для операции.

2. Поскольку вы используете операцию в операторе if, поэтому, если вы не введете в операцию и не дадите ей новое значение, значение операции останется тем, что вы ввели в нее в первый раз.