GOOGLE ADS

четверг, 14 апреля 2022 г.

TypeError: объект «список» не может быть интерпретирован как целое число

Функция playSoundпринимает список целых чисел и воспроизводит звук для каждого другого числа. Таким образом, если один из номеров в списке имеет обозначенный звук, который он будет воспроизводить 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вместо этого.

Комментариев нет:

Отправить комментарий

Laravel Datatable addColumn returns ID of one record only

Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...