web-dev-qa-db-ja.com

TypeError:リストのインデックスはフロートではなく整数でなければなりません

エラーが発生しているpython 3.xプログラムがあります:

def main():
    names = ['Ava Fischer', 'Bob White', 'Chris Rich', 'Danielle Porter',
             'Gordon Pike', 'Hannah Beauregard', 'Matt Hoyle',
             'Ross Harrison', 'Sasha Ricci', 'Xavier Adams']

    entered = input('Enter the name of whom you would you like to search for:')
    binary_search(names, entered)

    if position == -1:
        print("Sorry the name entered is not part of the list.")
    else:
        print(entered, " is part of the list and is number ", position, " on the list.")
    input('Press<enter>')

def binary_search(names, entered):
    first = 0
    last = len(names) - 1
    position = -1
    found = False

    while not found and first <= last:
        middle = (first + last) / 2

        if names[middle] == entered:
            found = True
            position = middle
        Elif names[middle] > entered:
            last = middle - 1
        else:
            first = middle + 1

    return position

main()

エラーは:

TypeError: list indices must be integers, not float

このエラーメッセージの意味を理解できません。

20
Dahaka

関数testOnData()でANNとPyBrainを使用すると、この問題が発生しました。

したがって、backprop.pyソースコードのインデックス内に「/」ではなく「//」を配置することで、この問題を解決しました。

私が変更され:

print(('Max error:', 
    max(ponderatedErrors), 
    'Median error:',
     sorted(ponderatedErrors)[len(errors) / 2])) # <-- Error area 

に:

print(('Max error:', 
    max(ponderatedErrors), 
    'Median error:',
     sorted(ponderatedErrors)[len(errors) // 2])) # <-- SOLVED. Truncated

それがあなたのお役に立てば幸いです。

1
Valber Cesar

私は間違っている可能性がありますが、この行:

binary_search(names, entered)

ではないだろう

position = binary_search(names, entered)
0
Hugo Ferreira