0

我对 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

4 回答 4

1

将您的除法操作放在这样的try-except块中:

try:
   # put division here div1/div2
   pass
except ZeroDivisionError:
   print "Divide by 0 Error"
于 2016-06-01T14:57:47.723 回答
0

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

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

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

于 2016-06-01T14:59:08.463 回答
0

尝试/除 :)

try:
    print div1, '/', div2, '=', div1/div2
except ZeroDivisionError:
    print div1, '/', div2, ':', 'Division by zero!'
于 2016-06-01T14:59:48.243 回答
0

将除法中的打印语句更改为:

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

这将确保无论何时您的 div2 ==0,而不是 div2 将变为 1,并将返回您的分子。当 div2 不是 0 时,not div2 将始终为 false,因此无需担心任何其他情况。

于 2018-02-13T16:38:16.983 回答