playSound
関数は整数のリストを取得し、異なる数ごとにサウンドを再生します。したがって、リスト内の数字の1つが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
リストを整数に変換する方法をいくつか試しました。何を変更する必要があるのかよくわかりません。これを行うためのより効率的な方法があると確信しています。どんな助けでも大歓迎です。
通常、エラーメッセージは正確の意味を意味します。したがって、それらは非常に注意深く読む必要があります。これを行うと、これは実際には、リストの種類containsについてではなく、むしろどの種類のオブジェクトについて不平を言っているのかがわかります。 is。リストに整数(複数)を含めたいと言っているのではなく、リストをinteger(単数)ではなく、何でもリスト。また、リストを単一の整数に変換することはできないので(少なくとも、このコンテキストでは意味のある方法ではありません)、試してはいけません。
質問は次のとおりです。なぜインタープリターはリストを整数として解釈したいのですか?答えは、整数を期待するrange
への入力引数としてリストを渡すことです。それをしないでください。いう for i in 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
のアイテムにアクセスする場合は、リストを直接ループします。
for i in myList:
...
デモ:
>>> myList = [1, 2, 3]
>>> for i in myList:
... print(i)
...
1
2
3
>>>
私にとっては、配列をパラセシスに配置する必要があるため、このエラーが発生していました。この場合、エラーは少し注意が必要です...
すなわち。 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:
OR
def playSound(myList):
for i in range(len(myList)):
OR
def playSound(myList):
for i, list_item in enumerate(myList):
代わりにこれを行う必要があります。
_for i in myList:
# etc.
_
つまり、range()
部分を削除します。 range()
関数は一連の数値を生成するために使用され、範囲を生成するための制限をパラメーターとして受け取ります。パラメーターとしてlistを渡すことは機能しません。リストを反復処理するには、上記のようにループを記述します。
range
を削除します。
for i in 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)
playSound()
では、代わりに
_for i in range(myList):
_
試してみる
_for i in myList:
_
これは、myList
の内容を反復処理します。 range(myList)
は意味がありません。