Как правильно написать условие, чтобы если человек пишет вместо знака действия другой символ-его возвращался до определения символа

Рейтинг: -1Ответов: 1Опубликовано: 27.02.2023

Вот моя попытка, но она ошибочна, меня после попытки ввода "несимвола" встречает моя ошибка, но просто больше не отпускает, даже если уже вводишь правильный символ.

a = float(input('Первое число:'))
what = input('Какое действие проведём?(+,-,/ или *):')
b = float(input('Второе число:'))

if what == '+':
   c = a + b

if what == '-':
   c = a - b

if what == '/':
   c = a / b

if what == '*':
   c = a * b
   
while (what != '*' or what != '/' or what != '+' or what != '-'):
   print('Введите именно действие!');what = input('Какое действие проведём?(+,-,/ или *):');

print('Результат:' + str(c))

Ответы

▲ 2Принят

Предлагаю реализовать это так:

a = float(input('Первое число:'))

while True:
    what = input('Какое действие проведём?(+,-,/ или *):')
    if what in ['+','-','/','*']:
        break
    else:
        print ('Введен недопустимый символ')

b = float(input('Второе число:'))

if what == '+':
   c = a + b

if what == '-':
   c = a - b

if what == '/':
   c = a / b

if what == '*':
   c = a * b
   
print('Результат:' + str(c))

Перед вычислением запускаем цикл который будет выполняться пока не получит нужное действие (сложение, умножение и т.д.). В вашем же случае проблема была в том, что вы не проверяете выбранное действие перед самим вычислением, таким образом "иной" символ, например "ъ" заставит игнорировать четыре if ... потом запустит ваш while в котором не определяется переменная c и не даст результата, т.к. все if уже пройдены.

Если калькулятор нужно зациклить, то также включаете его в конструкцию

while True:

    # тут основной код

    if what == 'exit':
        break