代码无法在Python中完成执行

2024-09-24 10:24:18 发布

您现在位置:Python中文网/ 问答频道 /正文

为了分析文件中的数据,我编写了以下代码。但是,当我实现代码时,它只是挂起,并没有将一些派生数据打印到屏幕上。它有什么问题,如果有的话?在

#!/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

Tags: 数据代码txtdatalencountopeninfile
2条回答

无限循环必须发生在while循环内部。i初始化为0。while循环会旋转,直到我碰到数组的边界。对于每个迭代,如果i+2没有越界,并且当前行以“Model”开头,则将i向前推进2。否则,如果i+8不会溢出边界,则将i提前11。因此,如果这两个条件都不是真的,while循环将永远不会终止。在

我想这个街区可能还需要其他条件:

else:
    i += 1

我自己的错误。我访问了代码底部最后一个if语句中sum表达式中的“data”数组,而不是“data2”数组。在

应该是:

for j,line in enumerate(data2):
    if data2[j]!=" ":
        count=count+1
        sum=sum+float(data2[j])

相关问题 更多 >