修改过的程序,ZeroDivision

2024-10-01 07:47:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经修改了一个允许舍入到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

Tags: infordatacountlinefloatsplitprint
1条回答
网友
1楼 · 发布于 2024-10-01 07:47:50

发生这种情况的原因似乎是ratio赋值(除以ptotntot)不包含在try/except块中。在try块中没有进行任何除法-为什么ZeroDivisionError会被捕获?你知道吗

如果要将其更改为:

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

这应该可以弥补你的错误。你知道吗

相关问题 更多 >