infile = open('numbers.txt','r')
c = 0
for i in infile:
if int(i) > c:
c = int(i)
hist = [0]*c
for i in infile: #checking
ii = int (i)-1
hist[ii] += 1 # problem area seemingly
for i in range(c):
print(str(i+1),':',end=' ')
print(str(hist[i]))
上面的代码的目的是打开number.txt,它有100个数字,都在范围内(1,101),所有都在其末尾有'\ n'个字符,并且计算每个数字遇到的次数。递增列表值Python 3
首先找到文件中最大的数字,然后用元素数量等于文件中最大的数字的列表是由最初设置为零的所有元素组成的。然后检查数字。文件中的所有数字都是整数。
如果包含在文件中的最大数是100,则该直方图[]列表具有最初100个元素,其均为0
在检查,说如果遇到数78,具有索引元素[ 77],即hist [77]从值0更新为1.如果再次遇到78,则hist [77]从1更改为2.
这样,无论文件中发生了多少个数字,计数器(也没有出现的数字,但少于最大出现的数字有计数器但这不是问题)。
检查到打开了正确的文件后,hist列表最初被正确设置,问题是当遇到相应的数字时,hist []列表的值不会增加。当我在最后打印列表时,所有值仍然为零。
我正在使用Python 3.4.3。脚本和'numbers.txt'都在我的桌面上。任何帮助赞赏。
非常感谢。我有一种误解,认为只有像read(),readline()这样的方法才会提高文件指针,而不是像infile中的基于语法的语句:我是一个python新手,所以......无论如何再次感谢。 – user2873330