该代码旨在打印随机输入离散数据的频率表。代码如下:
from math import log10
from random import randint
N = int(input("Enter number of observations:\n"))
l = [ randint(1,100) for var in range (N) ]
print(l)
l.sort()
print(l)
k = 1 + (3.332*log10(N))
k1 = round(k)
print ("Number of intervals should be = ",k1)
x = N//k1 + 1
print("S.No\t\tIntervals\t\tFrequency")
c = 1 #count
while c <= k:
a = (c-1)*x
b = c*x
count = 0
for v in range(a,b) in l:
count += 1
print(c,"\t\t","{}-{}".format(a,b),"\t\t",count)
c += 1
这显示了上面引用的错误,如何解决这个问题?
发布于 2018-06-17 13:36:45
问题是range(a,b)设置了一个从a到b-1的整数列表。您所要求的是让代码遍历l并挑选出符合这些条件的数字,取而代之的是:
for v in l:
if ((v>=a) and (v<b)):
count += 1
如果您真的想使用range,并且您的数据将保持为整数,那么它将如下所示:
for v in l:
if v in range(int(a),int(b)):
count += 1
也是
x = N//k1 + 1
应该是
x = 100//k1 + 1
https://stackoverflow.com/questions/50896844
复制