我有一个Python2.7脚本,它使用两个列表并将数字彼此分开,然后创建一个包含结果的新列表,它运行良好,但是在脚本必须除以0 /0的任何时候都会出现错误,这有时取决于我当前服务器的状态。有什么办法可以避免这种情况吗?
complist =[a, b, c]
totallist=[d, e, f]
percentlist = [Decimal(c) / Decimal(t) * 100 for c,t in zip(complist, totallist)] 我正在犯错误:
MacBook-Pro-3$ python dailyReport.py
Traceback (most recent call last):
File "dailyReport.py", line 67, in <module>
percentlist = [Decimal(l) / Decimal(t) * 100 for l,t in zip(complist, totallist)]
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/decimal.py", line 1321, in __truediv__
return context._raise_error(DivisionUndefined, '0 / 0')
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/decimal.py", line 3873, in _raise_error
raise error(explanation)
decimal.InvalidOperation: 0 / 0发布于 2017-04-27 22:27:48
怎么样
percentlist = [0 if t == 0 else Decimal(c) / Decimal(t) * 100 for c,t in zip(complist, totallist)]发布于 2017-04-27 21:38:57
使用try和except
try:
complist =[a, b, c]
totallist=[d, e, f]
percentlist = [Decimal(c) / Decimal(t) * 100 for c,t in zip(complist, totallist)]
except decimal.InvalidOperation:
print 'divide by zero error'编辑
如果要将其添加到新列表中,请使用它。
newlist = []
try:
complist =[a, b, c]
totallist=[d, e, f]
percentlist = [Decimal(c) / Decimal(t) * 100 for c,t in zip(complist, totallist)]
except decimal.InvalidOperation:
newlist.append(0)发布于 2017-04-27 21:39:14
我去了https://www.REPL.IT并尝试了你的代码。一般情况下,我不认为python允许除以零。我尝试了您的代码并打印(0/0),它返回一个错误
https://stackoverflow.com/questions/43668301
复制相似问题