INFILE是一个家谱:Python的while循环问题
holla 1755
ronaj 1781
asdflæj 1803
axle 1823
einar 1855
baelj 1881
æljlas 1903
jobbi 1923
gurri 1955
kolli 1981
Rounaj 2004
我想从INFILE和我想的平均最终打印出每一代人的时间。在这里,我想我的问题是,line2
失控的范围时INFILE结束:
def main():
infile = open('infile.txt', 'r')
line = infile.readline()
tmpstr = line.split('\t')
age=[]
while line !='':
line2 = infile.readline()
tmpstr2 = line2.split('\t')
age.append(int(tmpstr2[1]) - int(tmpstr[1]))
print age
tmpstr = tmpstr2
infile.close()
print sum(age)*1./len(age)
main()
所以我决定阅读所有信息列表,但tmpstr
doesn't变化值这里:
def main():
infile = open('infile.txt', 'r')
line = infile.readline()
age=[]
while line !='':
tmpstr = line.split('\t')
age.append(tmpstr[1])
print age
infile.close()
print sum(age)*1./len(age)
main()
怎么来的?这两个脚本有什么问题?为什么我两次写main()
? 任何想法如何解决这两个问题?
感谢名单全部,这是它是如何结束:
def main():
with open('infile.txt', 'r') as input:
ages = []
for line in input:
data = line.split()
age = int(data[1])
ages.append(age)
gentime = []
for i in xrange(len(ages)-1):
print ages[i+1] - ages[i]
gentime.append(ages[i+1] - ages[i])
print 'average gentime is', sum(gentime)*1./len(gentime)
main()
我的建议是去[codereview.se]代替。 – 2012-01-14 23:20:27
@Martin:codereview.SE不适用于破损的代码。 – 2012-01-14 23:23:43
@NiklasBaumstark:好的,好点。我以前没有这样想过。 – 2012-01-14 23:26:42