querytimes = "SELECT video_id, COUNT(src_ip) FROM video GROUP BY video_id ORDER BY COUNT(src_ip) DESC"
cur.execute (querytimes)
dltimes = cur.fetchall()
for row in dltimes:
videoid = str(row [0])
downloadtimes = int(str(row [1]))
x.append(rank)
rank = rank + 1
y.append(downloadtimes)
v.append(videoid)
counter = dict(zip(v, y))
for n in xrange(1, max(counter.itervalues()) + 1):
perc = 100. / sum(1 for nb in counter.itervalues() if nb == n) / len(counter)
if perc:
print '%.f%% videos have been downloaded %d times' % (perc, n)
这是我的密码。起初我从数据库中读取数据,然后将videoid和下载时间放入字典中,并进行一些计算,但我得到了以下错误:
perc = 100. / sum(1 for nb in counter.itervalues() if nb == n) / len(counter)
ZeroDivisionError: float division
有人能帮忙吗?
检查
counter
是否为空-换句话说,如果dltimes
中返回的值没有元素。我会在for
循环中执行类似的操作:或者,也有可能没有
nb == n
是真的值。在这种情况下:你检查过你的
counter
字典至少有一个值符合nb == n
条件吗?在我看来,结果要么是你的sum
,要么是你的len
返回0
。。。看看这个:
相关问题 更多 >
编程相关推荐