Ошибка: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 шт):
Во-первых, если хотите проверить две переменные на 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("Ошибка")