[解決済み] TypeError: リストのインデックスは整数でなければならず、floatではない
2022-01-28 06:32:08
質問
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
このエラーメッセージの意味がわからず困っています。
解決方法を教えてください。
Python 3.xをお使いのようですが、Python 3.xの重要な違いの1つは、除算の処理方法です。あなたが
x / y
Python 2.xでは10進数が切り捨てられるため、整数が返されます(フロア除算)。しかし、3.xでは
/
演算子は '真の' 除算を行い、結果として
float
の代わりに整数を使用します(例.
1 / 2 = 0.5
). これが意味するところは、リスト内の位置を参照するためにfloatを使おうとしているということです(例えば
my_list[0.5]
あるいは
my_list[1.0]
というのは、Pythonは整数を期待しているからです。したがって、まず
middle = (first + last) // 2
その結果、期待通りの結果が得られるように調整します。その結果、期待通りの結果が得られるように調整します。
//
は、Python 3.xでの床分割を示します。
関連
-
[解決済み】TypeErrorの修正方法。Unicodeオブジェクトは、ハッシュ化する前にエンコードする必要がある?
-
[解決済み】Haskellを学ぶ。HaskellでListからアイテムを削除する方法
-
[解決済み] TypeError: リストのインデックスは整数でなければならず、floatではない
-
[解決済み] super() は、新しいスタイルのクラスに対して "TypeError: must be type, not classobj" を送出する。
-
[解決済み] 既知のウェブクローラーの一覧はありますか?[クローズド]
-
[解決済み] Python: リストからpandasのデータフレームを作成する
-
[解決済み] TypeError: リストのインデックスは整数かスライスでなければならず、strではありません。
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] TypeError: Python3でファイルへの書き込み時に'str'ではなくbytesのようなオブジェクトが要求される
-
[解決済み】2つのリストを連結する - '+=' と extend() の違い)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Haskellを学ぶ。HaskellでListからアイテムを削除する方法
-
[解決済み] Python (2.x) リスト / サブリスト選択 -1 の不具合
-
[解決済み] リストに指定されたメンバが含まれているかどうかを判断するルールを定義する
-
[解決済み] ScalaのSeqとListの違いについて
-
ERROR:バイナリへのオペランドが無効です。
-
error C2955: 'std::list' : クラステンプレートの使用にはテンプレート引数のリストが必要です。
-
[解決済み] Python: リストからpandasのデータフレームを作成する
-
[解決済み] R:リストをテキストファイルに印刷する
-
[解決済み] 割り算で使う場合の「/」と「//」の違いは何ですか?
-
[解決済み】大きなリストの中のn番目の項目のリストを返すPythonicな方法