2016-06-01 7 views
-1

Я очень новичок в программировании на Python, и большинство ответов, которые я искал, - это более сложные версии сценария, чем я ищу. Я сделал очень упрощенным калькулятор:Python Calculator (Деление на нуль должным образом)

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 
+1

Обязательно скопируйте свои отступы, переписывая код Python. Непонятный код Python - это нонсенс. – khelwood

ответ

1

Положите вашу операцию деления в try-except блоке, как это:

try: 
    # put division here div1/div2 
    pass 
except ZeroDivisionError: 
    print "Divide by 0 Error" 
0

Используйте условие на div2, которая возвращает строку «Деление на 0 Ошибка» а не обрабатывать исключение - этот способ намного проще.

if div2 == 0: 
    print "Divide by 0 Error" 
else: 
    print div1, '/', div2, '=', div1/div2 

Причина, почему вы хотите, чтобы избежать TRY/поймать, потому что там нет необходимости, чтобы добавить исключение ловли, так как ваша программа проста. Накладные расходы не стоит, и ваша программа будет врезаться каждый раз, когда пользователь набирает «0»

+0

Это сработало спасибо! – Kolton

0

попробовать/за исключением :)

try: 
    print div1, '/', div2, '=', div1/div2 
except ZeroDivisionError: 
    print div1, '/', div2, ':', 'Division by zero!' 
0

Изменить оператор печати в подразделении, как:

print div1, '/', div2, '=', div1/(div2 or not div2) 

это будет проверять каждый раз, когда ваш div2 == 0, а не div2 станет 1 и даст вам числитель обратно. не div2 всегда будет ложным, если div2 не является 0, поэтому не нужно беспокоиться ни о каком другом случае.