0

私は、ユーザーが数字のリストを入力するプログラムを書いており、次に、プログラムがその数字の位置を返すようにする数字を尋ねられます。(例: 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()
4

1 に答える 1

0

まず、この回答には使用できるものがあります。list.indexリスト項目のインデックスを返すクラス メソッドです。

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

次に、Python の予約済みキーワードの 1 つであるTypeErrorため、a が発生します。list関数にリストを渡したい場合はSearch、'list' という名前を付けないでください。

関数内の「リスト」変数の名前を変更するだけで問題が解決します。さらに、別の定義方法を次に示しますsearch(Python 関数名は通常小文字です)。

def search(num, mylist):
    try:
        return mylist.index(num)
    except:
        return -1
于 2014-05-19T02:27:28.867 に答える