2016-09-16 15 views
-1

こんにちは私はpythonには新しく、ここでは線形検索を書くことによってそれを学ぼうとしています。これはコードです。これは今まで書いたコードです。リニア検索pythonを使用して

a = [100] 

n = int(raw_input("Enter the no. of elements: ")) 

print "Enter the elements: " 
for i in range(0,n): 
    print i 

item = int(raw_input("Enter the item to be searched: ")) 

for i in range(0,10): 

    if a[i] == item: 
     print "Item ", item, "found at location", i+1 
     break; 

if i == n: 
    print "Item", item, "not found" 

リストインデックスが範囲外であるというエラーが表示されます。どこが間違っていますか?

+2

あなたは、ブール値

  • 出会う全てのPythonの機能を使用し
  • 最初の空きスロットに、リストに要素を挿入するa.append(i) 1つの要素、すなわち 'a [0] == 100'のリストを持っています。なぜあなたはそれがもっとあると思いますか? – timgeb

  • +0

    通常、リストを検索するには、ゼロから 'len(a)'にループします。表現するはずの10は何ですか? –

    +0

    a = [100]#aを1つの要素でリストとして定義する - 100 – Aviad

    答えて

    1

    あなたのリストには1つの要素があります。 2番目のルックは範囲外の要素1〜9にアクセスしようとします。

    私は、その後、

    の要素のリストを生成するために、必要に応じて入力番号に反復可能

    for i, x in enumerate(a): 
        if x == item: 
         # found item at position i 
    

    の長さまで(インデックス、要素)のペアを返すenumerateを、使用することをお勧めしたいですあなたは数字の線形範囲をしたくない場合は

    n = int(raw_input("Enter the no. of elements: ")) 
    # build your list of n elements here 
    for i in range(0,n): 
        print i 
    
    例えば

    a = range(0, n)またはrandomモジュールをインポート

    0

    THER eはあなたのコード内のいくつかのエラーで、私はそれを再配置しようとしています:

    a = [] 
    
    n = int(raw_input("Enter the no. of elements: ")) 
    
    print "Enter the elements: " 
    for i in range(0,n): 
        a.append(i) 
        print (i) 
    
    item = int(raw_input("Enter the item to be searched: ")) 
    
    found = False 
    for i in range(0,len(a)): 
        if a[i] == item: 
         found = True 
         print "Item ", item, "found at location", i+1 
         break; 
    
    if (not found): 
        print "Item", item, "not found" 
    

    次の点に注意してください。

    1. 使用リストではなく配列:a = []
    2. は、リスト操作を使用します。例えばをわずかに異なる)
    +0

    ありがとう。 :)上記の1つは、私はブール値を追加することを検討しませんでした。 –

    +0

    あなたはようこそ!答えがあなたのために役立っているなら、上向きの矢印を押してください;) – acornagl

    +0

    10人まで上矢印を押すことができます、と私は信じています。また、なぜ 'append'を使うのですか? 'a = range(0、n)'が動作します –

    0

    (ソートアルゴリズム)

    a = [] 
    
    n = int(input("enter number of elements: ")) 
    
    print("appending elements: ") 
    
    for i in range(0, n): 
        a.append(i) 
        print(i) 
    
    item = int(input("enter the item to be searched: ")) 
    # for python2.x please use raw_input 
    
    for i in range(len(a)): 
        print("searching...") 
        if a[i] == item: 
         print("found! at: %s" % i) 
         break 
        else: 
         print("pretty bad day, nothing found!") 
    
    関連する問題