Последовательный поиск: длина ввода не обнаружена Python

Я пишу программу, в которой пользователь вводит список чисел, а затем спрашивает, с какого числа он или она хочет, чтобы программа возвращала эту позицию чисел. (Исх. 3,5,1,9,12,6 -> найти позицию в списке, где встречается 9) Я могу заставить это работать, если я жестко закодирую список и номер поиска, но у меня возникают проблемы с вводом, В основном моя проблема в том, что Python не определяет длину списка чисел, но я не уверен, как это исправить. Вот код, который у меня есть:

def List(line):
    list = []
    for e in line.split(','):
        list.append(int(e))

def Search(num, list):
    for i in range(len(list)):
        if list[i] == num:
            return i

    return -1

def main():
    line = input("Enter list of numbers separated by commas: ")
    p = input("Number searching for")

    print(List(line))

    a = Search(p, list)
    print(a)

main()

И вот ошибка:

Traceback (most recent call last):
  File "G:\Final Exam Practice\linearsearch.py", line 24, in <module>
    main()
  File "G:\Final Exam Practice\linearsearch.py", line 19, in main
    a = Search(p, list)
  File "G:\Final Exam Practice\linearsearch.py", line 7, in Search
    for i in range(len(list)):
TypeError: object of type 'type' has no len()

1 ответ

Во-первых, в этом ответе есть что-то, что вы могли бы использовать. list.index это метод класса, который возвращает индекс элемента списка:

>>> mylist = [3,5,1,9,12,6]
>>> mylist.index(9)
3

Далее TypeError поднимается потому что list является одним из зарезервированных ключевых слов Python. Если вы хотите передать список вашему Search функция, не называйте это "список".

Простое изменение имени переменной list в функции решит вашу проблему. Кроме того, вот еще один способ определить search (Имена функций Python обычно строчные):

def search(num, mylist):
    try:
        return mylist.index(num)
    except:
        return -1
Другие вопросы по тегам