我正在尝试浏览我创建的这个文件,只提取文件中人员的年龄。然后取年龄的平均值并打印出来。我正在尝试遍历文件中的行,它表明生成器对象没有属性。我使用的是python 3,我已经注释掉了以前使用的一些代码,所以我不必担心。我也不知道是否应该使用注释后的代码,但我只是害怕失去迄今为止得到的所有想法。如果我不能迭代,我如何在循环中获得这些年龄?
f = open('myfile.txt','w')
f.write('Name, Age, Gender, Professionn')
f.write('Harry, 23, Male, Software Engineern')
f.write('Sam, 25, Male, Lawyern')
f.write('Lisa, 29, Female, Computer Scientistn')
f.write('Mary, 22, Female, Doctorn')
f.close()
# print(readFile.read())
# readFile = open("myfile.txt")
with open('myfile.txt', 'r') as file:
for line in file:
values = (line.split(', ') for line in file)
if values.isdigit[1] == True:
numbers = 0
numbers += values
average = numbers % 4
print(average)
尝试:
f = open('myfile.txt','w')
f.write('Name, Age, Gender, Professionn')
f.write('Harry, 23, Male, Software Engineern')
f.write('Sam, 25, Male, Lawyern')
f.write('Lisa, 29, Female, Computer Scientistn')
f.write('Mary, 22, Female, Doctorn')
f.close()
with open('myfile.txt', 'r') as file:
numbers = 0
for line in file:
values = line.split(', ')
if values[1].isdigit() == True:
numbers += int(values[1])
average = numbers / 4
print(average) # 24.75
有几点可以改进:
values = (line.split(', ') for line in file)
为values
指定了一个生成器(注意看似无辜的括号(,而生成器没有isdigit
。您已经在使用for
循环,所以不需要生成器(实际上不应该(。在更正后的代码中,
values
现在是一个字符串列表。因此,您需要使用values[1]
来访问列表中的一个项目,然后应用isdigit
。您正在每次迭代中重置
numbers
。在循环之前启动变量。values[1]
是一个字符串,所以为了将其添加到numbers
中,您需要int
。%
是模算子。使用/
进行(实际(分割。使用硬编码的数字(在这种情况下,用特定的数字
4
除以某个数字(不是最好的选择。您可能需要另一种获取记录数的方法。