出席番号を探す
出席簿から、「ゆうたさん」を探します。あなたなら、どうしますか。
多くの人は、上から順に、一人ずつ名前を見ていきます。見つかったら、そこで止めます。
この「順番に探す」手順は、プログラムでも、よく使われます。
今日のキーワード
| ことば | いみ | れい |
|---|---|---|
| 探索 | たくさんのデータの中から、目的のものを探すことです。 | 名簿から名前を探す |
| 線形探索 | 先頭から順に、一つずつ調べて探す方法です。 | 1番目、2番目、3番目… |
| 目的の値 | 探している値のことです。この授業では、target と書きます。 | target = 20 |
| 見つからない | 最後まで見ても、目的の値がなかったことです。 | 答えは -1 |
| 比べる回数 | 探すまでに、要素を調べた回数です。手間の目安になります。 | 3回 |
学生が入力するセルは、このプレビューでは空白です。
やってみよう: 順番に探す
items = [30, 10, 20, 50]
target = 20
answer = -1
for i in range(len(items)):
print(i, "番目を見ます:", items[i])
if items[i] == target:
answer = i
break # ここで、くり返しを終わらせます
print("見つかった番号:", answer)
# target を 99 に変えると、どうなりますか。
見つからなかったとき
最後まで見ても、目的の値がなければ、番号は答えられません。
そこで、「ない」を表す番号として、-1 を使うことが多いです。番号は 0 から始まるので、-1 は、本物の番号とまちがえません。
例: 探すのにかかる回数
| リスト | 目的の値 | 見る回数 | 答え |
|---|---|---|---|
| [30, 10, 20, 50] | 30 | 1 | 0番目 |
| [30, 10, 20, 50] | 20 | 3 | 2番目 |
| [30, 10, 20, 50] | 50 | 4 | 3番目 |
| [30, 10, 20, 50] | 99 | 4 | 見つからない(-1) |
学生が入力するセルは、このプレビューでは空白です。
小さな確認: 順番に探す
やってみよう
小さな確認: 順番に探す
3問挑戦してみましょう。回答はここで採点され、その後は保存されません。点数を残したい場合や、続きから再開したい場合はログインしてください。ログインして点数を保存
答えはここで採点され、保存されません。アカウントがあれば、結果が残ります。
Python の道具
Python には、探す道具もあります。target in items は、あるかないかを True か False で答えます。
items.index(target) は、番号を答えます。ただし、ないときは、エラーになります。
中では、先ほどと同じ「順番に探す」が動いています。
やってみよう: 道具を使う
items = [30, 10, 20, 50]
print(20 in items)
print(99 in items)
print(items.index(20))
# 先に in で調べると、エラーを防げます。
if 99 in items:
print(items.index(99))
else:
print("ありません")