我已经改变了一个程序以允许舍入到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
答案 0 :(得分:0)
看起来发生这种情况的原因是ratio
分配(ptot
和ntot
除以)try/except
阻止。您未在try
区块中进行任何划分 - 为什么要抓住ZeroDivisionError
?
如果您要将其更改为:
ratio = 0
try:
ratio = float(ptot) / float(ntot)
print "%.2f" % ratio
except ZeroDivisionError:
print ptot
这可以解决你的错误。