首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当0/0发生时,如何避免十进制函数失败?

当0/0发生时,如何避免十进制函数失败?
EN

Stack Overflow用户
提问于 2017-04-27 21:34:50
回答 3查看 1.1K关注 0票数 0

我有一个Python2.7脚本,它使用两个列表并将数字彼此分开,然后创建一个包含结果的新列表,它运行良好,但是在脚本必须除以0 /0的任何时候都会出现错误,这有时取决于我当前服务器的状态。有什么办法可以避免这种情况吗?

代码语言:javascript
复制
complist =[a, b, c]
totallist=[d, e, f]

percentlist = [Decimal(c) / Decimal(t) * 100 for c,t in zip(complist, totallist)] 

我正在犯错误:

代码语言:javascript
复制
    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
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-04-27 22:27:48

怎么样

代码语言:javascript
复制
percentlist = [0 if t == 0 else Decimal(c) / Decimal(t) * 100 for c,t in zip(complist, totallist)]
票数 0
EN

Stack Overflow用户

发布于 2017-04-27 21:38:57

使用tryexcept

代码语言:javascript
复制
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'

编辑

如果要将其添加到新列表中,请使用它。

代码语言:javascript
复制
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)
票数 -1
EN

Stack Overflow用户

发布于 2017-04-27 21:39:14

我去了https://www.REPL.IT并尝试了你的代码。一般情况下,我不认为python允许除以零。我尝试了您的代码并打印(0/0),它返回一个错误

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43668301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档