Ошибка:ZeroDivisionError: float modulo

Задача: Напишите простой калькулятор, который считывает с пользовательского ввода три строки: первое число, второе число и операцию, после чего применяет операцию к введённым числам ("первое число" "операция" "второе число") и выводит результат на экран.

Поддерживаемые операции: +, -, /, *, mod, pow, div, где mod — это взятие остатка от деления, pow — возведение в степень, div — целочисленное деление.

Проблема: При операциях с нулем возвращает:
Traceback (most recent call last): File "jailed_code", line 9, in print(n1 % n2) ZeroDivisionError: float modulo

Мой код:

n1 = float(input())
n2 = float(input()
o = str(input())

if o == 'mod':
    if (n1 or n2) == 0.0:
        print("Деление на 0!")
    else:
        print(n1%n2)
elif o == 'div':
    if (n1 or n2) == 0.0:
        print("Деление на 0!")
    else:
        print(n1//n2)  
elif o == '/':
    if (n1 or n2) == 0.0:
        print("Деление на 0!")
    else:
        print(n1/n2)        
elif o == '*':
    print(n1 * n2)
elif o == '+':
    print(n1 + n2)
elif o == '-':
    print(n1 - n2)
elif o == 'pow':
    print(n1 ** n2)
else:
    print('Something was wrong')

Ответы (2 шт):

Автор решения: GrAnd

Во-первых, если хотите проверить две переменные на 0, то это пишется так:

if n1 == 0.0 or n2 == 0.0:

В вашем же случае, если, скажем n1 = 1 и n2 = 0, то (n1 or n2) получается (1 or 0), что будет равно 1, и оно никак не будет равно 0, хотя n2 при этом "запрещённый" 0.

А во-вторых, зачем вы делимое проверяете? На ноль же делить нельзя, т.е. только делитель n2 должен быть не равен 0.

→ Ссылка
Автор решения: Максим Стегнов

Можно использовать исключения

try:
    #ваш код
except ZeroDivisionError:
    print("На ноль делить нельзя")
except:
    print("Ошибка")
→ Ссылка