gpt4 book ai didi

Python while 循环问题

转载 作者:行者123 更新时间:2023-11-28 22:03:35 24 4
gpt4 key购买 nike

Infile 是家谱:

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 不会更改此处的值:

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()

最佳答案

试试这个:

def main():
with open('infile.txt', 'r') as input:
ages, n = 0, 0
for line in input:
age = int(line.split()[1])
ages += age
n += 1
print age
print 'average:', float(ages) / n

一些评论:

  • 你不需要使用列表来累加数字,几个局部变量就足够了
  • 在这种情况下,最好使用不带参数的 split(),这样当名称与前面的数字之间用空格分隔时,您将正确处理输入 < em>或标签
  • 使用 with 语法打开文件并确保文件随后关闭也是一个好主意

关于您问题的最后部分,“为什么我要写两次 main()?”那是因为您第一次定义 main 函数而第二次调用它。

关于Python while 循环问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8866156/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com