Замените условие на
if not b and ( c=='mod' or c=='/' or c=='div'):
print("Делеение на ноль")
или лучше на
if not b and c in ['/','%', 'mod', 'div']:
print("Делеение на ноль")
а так пара других вариантов
a = float(input())
b = float(input())
c = input()
z_div = 'Деление на ноль!"
OPERATORS = {
"+": a + b,
"-": a - b,
"*": a * b,
"/": a / b if b else z_div,
"mod": a % b if b else z_div,
"div": a // b if b else z_div,
"pow": a ** b
}
print(OPERATORS[c])
более понятный вариант, но придется вычислять все варианты.
Более python way :
a = float(input())
b = float(input())
c = input()
z_div = 'Деление на ноль!'
OPERATORS = {
"+": lambda x, y: x + y,
"-": lambda x, y: x - y,
"*": lambda x, y: x * y,
"/": lambda x, y: x / y if y else None,
"mod": lambda x, y: x % y if y else None,
"div": lambda x, y: x // y if y else None,
"pow": lambda x, y: x ** y
}
print(OPERATORS[c](a, b))
АНАЛог с eval :
a = input()
b = input()
c = input()
OPERATORS = {
"+": "+",
"-": "-",
"*": "*",
"/": "/",
"mod": "%",
"div": "//",
"pow": "**"
}
if not float(b) and c in ['/','%', 'mod', 'div']:
print('Деление на ноль!')
else:
print(
eval(
a + OPERATORS[c] + b
)
)