Python计算器(正确除以零)

时间:2016-06-01 14:55:56

标签: 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 '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 个答案:

答案 0 :(得分:1)

将您的除法运算放在try-except块中,如下所示:

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

答案 1 :(得分:0)

在div2上使用一个条件,它返回字符串“Divide by 0 Error”而不是处理异常 - 这种方式要简单得多。

np.mean((regr.predict(diabetes_X_test) - diabetes_y_test) ** 2)

你想要避免try / catch的原因是因为你的程序很简单,所以不需要添加异常捕获。开销不值得,每次用户键入'0'

时,程序都会崩溃

答案 2 :(得分:0)

尝试/除外:)

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

答案 3 :(得分:0)

将分区中的print语句更改为:

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

这将确保每当你的div2 == 0,而不是div2将变为1并且会给你分子。 当div2不是0时,div2将永远不为假,所以不必担心任何其他情况。

相关问题