改变程序,ZeroDivisionError

时间:2014-11-18 20:05:47

标签: python divide-by-zero

我已经改变了一个程序以允许舍入到2dps但是尽管在“ZeroDivisionError:float division”之前已经成功地消除了它,但它已经返回了。我需要做哪些改动才能使用最优雅的方法来避免错误?

当时:

for line in data:
  split=line.split()
  ptot=0
  ntot=0
  for pchar in "HKR":
    pchartotal=split[1].count(pchar)
    ptot+=pchartotal
  for nchar in "DE":
    nchartotal=split[1].count(nchar)
    ntot+=nchartotal
  try:
    print float(ptot)/float(ntot)
  except ZeroDivisionError:
    print ptot

时:

for line in data:
  split=line.split()
  ptot=0
  ntot=0
  for pchar in "HKR":
    pchartotal=split[1].count(pchar)
    ptot+=pchartotal
  for nchar in "DE":
    nchartotal=split[1].count(nchar)
    ntot+=nchartotal
  ratio=float(ptot)/float(ntot)
  try:
    print "%.2f" % ratio
  except ZeroDivisionError:
    print ptot

1 个答案:

答案 0 :(得分:0)

看起来发生这种情况的原因是ratio分配(ptotntot除以)try/except阻止。您未在try区块中进行任何划分 - 为什么要抓住ZeroDivisionError

如果您要将其更改为:

ratio = 0
try:
    ratio = float(ptot) / float(ntot)
    print "%.2f" % ratio
except ZeroDivisionError:
    print ptot

这可以解决你的错误。