Python Calculator (Правильное деление на ноль)
Я очень плохо знаком с программированием на Python, и большинство ответов, которые я искал, являются более сложными версиями скрипта, чем я ищу. Я сделал очень упрощенный калькулятор:
loop = 1
choice = 0
while loop == 1:
print 'Python Calculator!\n'
print 'Mathematical Operation:\n'
print '1) Addition'
print '2) Subtraction'
print '3) Multiplication'
print '4) Division'
print '5) Quit Python Calculator'
choice = input('Choose your operation: ')
if choice == 1:
add1 = input('Add:')
add2 = input('to: ')
print add1, '+', add2, '=', add1 + add2
elif choice == 2:
sub2 = input('Subtract: ')
sub1 = input('from: ')
print sub1, '-', sub2, '=', sub1-sub2
elif choice == 3:
mul1 = input('Multiply: ')
mul2 = input('by: ')
print mul1, '*', mul2, '=', mul1 * mul2
elif choice == 4:
div1 = input('Divide: ')
div2 = input('by: ')
print div1, '/', div2, '=', div1/div2
elif choice == 5:
print 'GOODBYE'
exit()
Теперь мне интересно, как я могу разделить на ноль и вернуть вывод "Ошибка деления на 0", а не то, что он делает сейчас, то есть выйти из программы. Ошибка, которую я получаю при делении на 0:
Traceback (most recent call last):
File "./calculator.py", line 32, in <module>
print div1, '/', div2, '=', div1/div2 ZeroDivisionError:
integer division or modulo by zero
4 ответа
Поместите свою операцию деления в try-except
блок, как это:
try:
# put division here div1/div2
pass
except ZeroDivisionError:
print "Divide by 0 Error"
Измените оператор печати в подразделении следующим образом:
print div1, '/', div2, '=', div1/(div2 or not div2)
это гарантирует, что ваш div2 ==0, а не div2 станет 1 и вернет вам числитель. not div2 всегда будет ложным, когда div2 отличен от 0, поэтому не нужно беспокоиться о любом другом случае.
Попробуй / кроме:)
try:
print div1, '/', div2, '=', div1/div2
except ZeroDivisionError:
print div1, '/', div2, ':', 'Division by zero!'
Используйте условие для div2, которое возвращает строку "Ошибка деления на 0", вместо обработки исключения - этот способ намного проще.
if div2 == 0:
print "Divide by 0 Error"
else:
print div1, '/', div2, '=', div1/div2
Причина, по которой вы хотите избежать try / catch, заключается в том, что нет необходимости добавлять перехват исключений, поскольку ваша программа проста. Затраты не стоят, и ваша программа будет аварийно завершать работу каждый раз, когда пользователь вводит '0'