Нашел баг в python(другого объяснения я не могу найти). Любую операцию на 0 трактует как деление
try:
a = float(input('first: '))
b = float(input('second: '))
c = str(input('action: '))
dict = {'mod': a % b, 'pow': a ** b, 'div': a // b, '+': a + b,
'-': a - b, '/': a / b, '*': a * b}
print(dict[c])
except ZeroDivisionError:
print('Деление на 0!')
![[]](https://i.stack.imgur.com/SQ8TL.jpg)
Ответы (1 шт):
Автор решения: Eugene X
→ Ссылка
Вот так будет работать.
Помимо контрольных символов, ты сразу производишь все операции, а это совсем не правильно. Получается что ты сразу считаешь всё... (a % b), (a ** b), ..., (a / b)
10 mod 0 :)))) Ошибка с деления на ноль.
try:
a = float(input('first: ').rstrip())
b = float(input('second: ').rstrip())
c = str(input('action: ').rstrip())
dict = {
'mod': lambda: a % b,
'pow': lambda: a ** b,
'div': lambda: a // b,
'+': lambda: a + b,
'-': lambda: a - b,
'/': lambda: a / b,
'*': lambda: a * b
}
print(dict[c]())
except ZeroDivisionError:
print('Деление на 0!')
except ValueError:
print('Значение должно быть числом')
except KeyError:
print('Операция неизвестна!')