我编写了以下代码以分析文件中的数据。但是,当我实现代码时,它只是挂起并且没有完成一些打印到屏幕的派生数据。有什么问题,如果有的话?
#!/usr/bin/python2.7
infile=open("ratios.dat","r")
outfile=open("corr_ratios.txt","wb")
outfile2=open("corr_ratios2.txt","wb")
data=infile.readlines()
i=0
while i < len(data):
if i+2 < len(data) and data[i+2].startswith("Model "):
outfile.write(" ")
outfile.write("\n")
i=i+2;
elif i+8 < len(data):
targetline=data[i+8]
outfile.write(targetline.split(" ")[0]+"\n")
outfile2.write(targetline.split(" ")[2]+"\n")
i=i+11;
count=0
sum=0.0
infile2=open("corr_ratios.txt","r")
data2=infile2.readlines()
for j,line in enumerate(data2):
if data2[j]!=" ":
count=count+1
sum=sum+float(data[j])
mean=sum/count
print count,sum,mean
答案 0 :(得分:1)
我自己的错误。我在代码底部的最后一个if语句中的sum方程中访问了“data”数组而不是“data2”数组。
应该是:
for j,line in enumerate(data2):
if data2[j]!=" ":
count=count+1
sum=sum+float(data2[j])
答案 1 :(得分:1)
无限循环必须在while循环内发生。 i
被初始化为0. while循环旋转直到我到达数组的边界。对于每次迭代,如果i+2
没有超出范围并且当前行以“Model”开头,则将i前进2.否则,如果i+8
不会溢出边界,则前进{{1}因此,如果这些条件都不成立,则while循环将永远不会终止。
我想也许这个街区可能还有其他条件:
i