2017-10-10 77 views
0

我看到很多關於同一個錯誤的問題,但是我沒有發現任何似乎是同一件事的人。錯誤「AttributeError:'NoneType'對象沒有屬性'append'」

的一部分(這似乎與我有關),我的代碼是:

falta = [0] 
x = 0 
o = 0 
aux = a 
while a in range(aux, len(repetido)): 
    print("a %s" %a) 
    x = 0 
    while int(repetido[a].academia) != int(vetor[x].academia): 
     print("repetido %s" % repetido[a].academia) 
     print("vetor %s" %vetor[x].academia) 
     x = x + 1 
     if a == aux: 
      falta[0] = int(vetor[x].inscricao) 
      print("este eh o primeiro falta: %s" %falta[0]) 
     else: 
      falta.append(int(vetor[x].inscricao)) 
     falta = random.shuffle(falta) 
     a = a + 1 

我收到此錯誤信息:

File "C:/Users/vivia/PycharmProjects/karate/Teste posicoes repetidas.py", line 60, in posicionaAcademiaIgual 

falta.append(int(vetor[x].inscricao)) 

AttributeError: 'NoneType' object has no attribute 'append' 

我沒有在任何其他地方使用該falta列表在節目中。 對不起,我的英語不好。

+1

'random.shuffle'是Python程序中的一個*程序*;它在參數列表上運行並返回'None'。這與一個*函數*相反,後者執行圍繞它的參數的計算,通常不會改變它們,並返回計算結果。請參閱[本](https://stackoverflow.com/questions/721090/what-is-the-difference-between-a-function-and-a-procedure) – Will

回答

2

只是讓我的意見作出正式答覆。

當您執行轉讓falta = random.shuffle(falta)時,falta變爲None,因爲random.shuffle在適當位置運行並返回None。當你在你的下一次迭代中出現時,falta已經變成沒有了,當你撥打falta.append時,AttributeError被拋出。

而不是

falta = random.shuffle(falta) 

嘗試

random.shuffle(falta) 

而且讀this

+0

謝謝sooo多,這是很好的!問題解決了! –

0

我想你是從numpy隨機使用。 ranom.shuffle將返回None,它將清單重新排列。所以更改

falta = random.shuffle(falta) 

andom.shuffle(falta) 
相關問題