Как правильно написать условие, чтобы если человек пишет вместо знака действия другой символ-его возвращался до определения символа
Вот моя попытка, но она ошибочна, меня после попытки ввода "несимвола" встречает моя ошибка, но просто больше не отпускает, даже если уже вводишь правильный символ.
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))
Ответы (1 шт):
Предлагаю реализовать это так:
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