Python计算器(正确地除以零)

Python计算器(正确地除以零),python,calculator,divide-by-zero,dividebyzeroexception,Python,Calculator,Divide By Zero,Dividebyzeroexception,我对Python编程非常陌生,我搜索到的大多数答案都是比我想要的更复杂的脚本版本。我制作了一个非常简单的计算器: loop = 1 choice = 0 while loop == 1: print 'Python Calculator!\n' print 'Mathematical Operation:\n' print '1) Addition' print '2) Subtraction' print '

我对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 
回溯(最近一次呼叫最后一次):
文件“/calculator.py”,第32行,在
打印div1“/”,div2“=”,div1/div2 ZeroDivisionError:
整数除零或模零

将除法运算放入一个
块中,尝试以下操作:

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

在div2上使用一个返回字符串“除以0错误”的条件,而不是处理异常-这种方法简单得多

if div2 == 0:
    print "Divide by 0 Error"
else:
    print div1, '/', div2, '=', div1/div2 
您希望避免try/catch的原因是,由于您的程序很简单,因此不需要添加异常捕获。开销不值得,每次用户键入“0”时,您的程序都会崩溃。

try/except:)


将部门中的打印语句更改为:

print div1, '/', div2, '=', div1/(div2 or not div2)
这将确保当div2==0时,notdiv2将变为1,并将返回分子。
当div2不是0时,not div2将始终为false,因此不必担心任何其他情况。

在转录Python代码时,请确保忠实地复制缩进。未插入的Python代码是胡说八道。
print div1, '/', div2, '=', div1/(div2 or not div2)