簡體   English   中英

TypeError: 'list' object 不能解釋為 integer

[英]TypeError: 'list' object cannot be interpreted as an integer

playSound function 正在獲取一個整數列表,並將為每個不同的數字播放聲音。 因此,如果列表中的數字之一是1 ,則1具有將播放的指定聲音。

def userNum(iterations):
  myList = []
  for i in range(iterations):
    a = int(input("Enter a number for sound: "))
    myList.append(a)
    return myList
  print(myList)

def playSound(myList):
  for i in range(myList):
    if i == 1:
      winsound.PlaySound("SystemExit", winsound.SND_ALIAS)

我收到此錯誤:

TypeError: 'list' object cannot be interpreted as an integer

我嘗試了幾種將列表轉換為整數的方法。 我不太確定我需要改變什么。 我相信有一種更有效的方法可以做到這一點。 任何幫助將不勝感激。

錯誤消息通常是指正是他們在說什么。 因此,必須非常仔細地閱讀它們。 當你這樣做時,你會發現這個實際上並沒有像你假設的那樣抱怨你的列表包含什么類型的對象,而是抱怨它什么類型的對象。 這並不是說它希望您的列表包含整數(復數)——相反,它似乎希望您的列表是一個整數(單數)而不是任何內容的列表。 而且由於您無法將列表轉換為單個整數(至少,在這種情況下不是有意義的方式),因此您不應該嘗試。

所以問題是:為什么解釋器似乎要將您的列表解釋為整數? 答案是您將列表作為輸入參數傳遞給range ,它需要一個整數。 不要那樣做。 改為for i in myList說。

對我來說,我收到此錯誤是因為我需要將數組放在 paratheses 中。 在這種情況下,錯誤有點棘手......

IE。 concatenate((a, b))是對的

concatenate(a, b)

希望有幫助。

錯誤來自於此:

def playSound(myList):
  for i in range(myList): # <= myList is a list, not an integer

您不能將列表傳遞給需要整數的range 最有可能的是,您打算這樣做:

 def playSound(myList):
  for list_item in myList:

或者

 def playSound(myList):
  for i in range(len(myList)):

或者

 def playSound(myList):
  for i, list_item in enumerate(myList):

range需要一個整數參數,它將從中構建一個整數范圍:

>>> range(10)
range(0, 10)
>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>>

此外,給它一個列表會引發一個TypeError因為range不知道如何處理它:

>>> range([1, 2, 3])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'list' object cannot be interpreted as an integer
>>>

如果要訪問myList的項目, myList直接遍歷列表:

for i in myList:
    ...

演示:

>>> myList = [1, 2, 3]
>>> for i in myList:
...     print(i)
...
1
2
3
>>>

刪除range

for i in myList

range 接受一個整數。 你想要列表中的每個元素。

你應該這樣做:

for i in myList:
    # etc.

也就是說,刪除range()部分。 range()函數用於生成數字序列,它接收生成范圍的限制作為參數,將列表作為參數傳遞是行不通的。 要迭代列表,只需編寫如上所示的循環。

由於它是一個列表,因此不能直接將其帶入范圍函數中,因為缺少列表的奇異整數值。

用這個

for i in range(len(myList)):

有了這個,我們得到了可以輕松使用的奇異整數值

playSound() ,而不是

for i in range(myList):

嘗試

for i in myList:

這將遍歷myList的內容,我相信這是您想要的。 range(myList)沒有任何意義。

def userNum(iterations):
    myList = []
    for i in range(iterations):
        a = int(input("Enter a number for sound: "))
        myList.append(a)
    print(myList) # print before return
    return myList # return outside of loop

def playSound(myList):
    for i in range(len(myList)): # range takes int not list
        if i == 1:
            winsound.PlaySound("SystemExit", winsound.SND_ALIAS)
n=input().split()
ar=[]
for i in n:
    if i not in ar:
        ar.append(i)
print(*ar)

我們通常將字符串作為 integer 傳遞...為此我們必須鍵入“n”

當我們面臨這樣的錯誤時:
類型錯誤: st對象不能解釋為st

這通常是因為我們在 for 循環中使用 X 而不是 len(X)

#error 
for i in range(df.index):
    pass

#currect
for i in range( len(df.index) ):
    pass

使用范圍時,列表不能解釋為 integer

for i in range(list): ->將不起作用

for i in list: ->會起作用

暫無
暫無

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

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