De functie playSound
neemt een lijst met gehele getallen en speelt een geluid af voor elk ander nummer. Dus als een van de nummers in de lijst 1
is, heeft 1
een bepaald geluid dat zal worden afgespeeld.
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)
Ik krijg deze foutmelding:
TypeError: 'list' object cannot be interpreted as an integer
Ik heb een paar manieren geprobeerd om de lijst naar gehele getallen te converteren. Ik weet niet zo zeker wat ik moet veranderen. Ik weet zeker dat er een efficiëntere manier is om dit te doen. Alle hulp zou zeer op prijs worden gesteld.
Antwoord 1, autoriteit 100%
Foutberichten betekenen meestal precieswat ze zeggen. Ze moeten dus zeer aandachtig worden gelezen. Als je dat doet, zul je zien dat deze niet echt klaagt, zoals je lijkt te hebben aangenomen, over wat voor soort object je lijst bevat, maar eerder over wat voor soort object het is. Het zegt niet dat het wil dat uw lijst gehele getallen (meervoud) bevat – in plaats daarvan lijkt het erop te willen dat uw lijst een geheel getal(enkelvoud) is in plaats van een lijst van wat dan ook. En aangezien je een lijst niet kunt converteren naar een enkel geheel getal (tenminste, niet op een manier die in deze context zinvol is), zou je het niet moeten proberen.
De vraag is dus: waarom heeft de tolk lijken te willen om uw lijst te interpreteren als een integer? Het antwoord is dat u uw lijst passeren als de invoer argument naar range
, die een integer verwacht. Doe dat niet. Say for i in myList
.
Antwoord 2, Autoriteit 40%
Voor mij ik kreeg deze fout, omdat ik die nodig zijn om de arrays in paratheses zetten. De fout is een beetje lastig in dit geval …
ie. concatenate((a, b))
rechter
niet concatenate(a, b)
hoop dat het helpt.
Antwoord 3, Autoriteit 20%
De fout is van deze:
def playSound(myList):
for i in range(myList): # <= myList is a list, not an integer
U kunt geen lijst naar range
, die een integer verwacht passeren. Het meest waarschijnlijk, je bedoeld om te doen:
def playSound(myList):
for list_item in myList:
of
def playSound(myList):
for i in range(len(myList)):
of
def playSound(myList):
for i, list_item in enumerate(myList):
Antwoord 4, Autoriteit 18%
range
is een integer verwacht argument, waaruit een reeks van gehele getallen zal bouwen:
>>> range(10)
range(0, 10)
>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>>
Bovendien, waardoor het een lijst zal een TypeError
omdat range
zal niet weten hoe om te gaan:
>>> range([1, 2, 3])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'list' object cannot be interpreted as an integer
>>>
Als u toegang wilt tot de items in myList
, loop dan rechtstreeks over de lijst:
for i in myList:
...
Demo:
>>> myList = [1, 2, 3]
>>> for i in myList:
... print(i)
...
1
2
3
>>>
Antwoord 5, autoriteit 12%
verwijder het range
.
for i in myList
bereik bevat een geheel getal. u wilt voor elk element in de lijst.
Antwoord 6, autoriteit 8%
U zou dit in plaats daarvan moeten doen:
for i in myList:
# etc.
Dat wil zeggen, verwijder het gedeelte range()
. De functie range()
wordt gebruikt om een reeks getallen te genereren, en het ontvangt als parameters de limieten om het bereik te genereren, het zal niet werken om een lijstdoor te geven als parameter. Om de lijst te herhalen, schrijft u gewoon de lus zoals hierboven weergegeven.
Antwoord 7, autoriteit 5%
aangezien het een lijst is, kan deze niet rechtstreeks in de bereikfunctie worden opgenomen omdat de enkelvoudige integerwaarde van de lijst ontbreekt.
gebruik dit
for i in range(len(myList)):
Hiermee krijgen we de enkelvoudige integerwaarde die gemakkelijk kan worden gebruikt
Antwoord 8, autoriteit 2%
In playSound()
, in plaats van
for i in range(myList):
probeer
for i in myList:
Dit herhaalt de inhoud van myList
, wat volgens mij is wat je wilt. range(myList)
slaat nergens op.
Antwoord 9, autoriteit 2%
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)