簡體   English   中英

AttributeError: 'generator' object 沒有屬性 '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

有幾個問題:

  1. values = (line.split(', ') for line in file)將生成器分配給values ,而生成器沒有isdigit 您已經在使用for循環,因此您不需要生成器(實際上您不應該)。

  2. 在更正后的代碼中, values現在是字符串列表。 因此,您需要使用values[1]訪問列表中的一項,然后應用isdigit

  3. 您在每次迭代中重置numbers 在循環之前啟動變量。

  4. values[1]是一個字符串,因此要將其添加到numbers ,您需要int

  5. %是模數運算符。 使用/進行除法。

  6. 使用硬編碼的數字(在這種情況下,將某物除以特定數字4 )不是最佳選擇。 您可能需要另一種方法來獲取記錄數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM