![](/img/trans.png)
[英]AttributeError: 'int' object has no attribute 'isdigit'
[英]AttributeError: 'generator' object has no attribute 'isdigit'
我正在嘗試通過我創建的這個文件來 go 並且只提取文件中人員的年齡。 然后取年齡的平均值並將其打印出來。 我試圖遍歷文件中的行,它說生成器 object 沒有屬性。 我正在使用 python 3 並且我注釋掉了我之前使用的一些代碼,所以我不必擔心它。 我也不知道我是否應該使用帶注釋的代碼,但我只是害怕失去到目前為止我得到的所有想法。 如果我無法迭代,如何在循環中獲取這些年齡?
f = open('myfile.txt','w') f.write('Name, Age, Gender, Profession\n') f.write('Harry, 23, Male, Software Engineer\n') f.write('Sam, 25, Male, Lawyer\n') f.write('Lisa, 29, Female, Computer Scientist\n') f.write('Mary, 22, Female, Doctor\n') 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, Profession\n')
f.write('Harry, 23, Male, Software Engineer\n')
f.write('Sam, 25, Male, Lawyer\n')
f.write('Lisa, 29, Female, Computer Scientist\n')
f.write('Mary, 22, Female, Doctor\n')
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
)不是最佳選擇。 您可能需要另一種方法來獲取記錄數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.