ロジカ式logo

はじめての
Python

ページ一覧に戻る
応用問題6 探索
探索
問題1
  •   以下の要件でプログラムを作ってください。
  • ・10人分の名前のリストがあります。
  • ・キーボードから、名前を入力します。
  • ・リストの中に、キーボードから入力された名前と一致するものがあるか探索します。
  • ・もし一致する名前があれば、「◯番目の「〇〇」と一致しました」と表示します。
  • ・また一致する名前がなかったときには、「一致する名前はありませんでした」と表示します。
ロボた

繰り返しを使って、リストの中の値を一つずつ取り出して、キーボードから入力された文字列と一致するかどうか調べるとできそうだね!

「◯番目と一致しました」と出力するためには、繰り返した回数を得る必要があるね!

ロボち
ロボた

それに、どれにも一致するものがなかったことを判断するには、どうしたらいいかも考えないといけないよね!

どんなプログラムにすればいいか、よ~く考えてね!

ロボち
PRACTICE
name_list = ["高田智子", "上原明", "藤本光子", "今井美羽", "高橋隆史", "福田愛子", "菊池純", "松岡美樹", "中村拓志", "青木涼介"] str = input()

📖 解答例と解説

name_list = ["高田智子", "上原明", "藤本光子", "今井美羽", "高橋隆史",
             "福田愛子", "菊池純", "松岡美樹", "中村拓志", "青木涼介"]
str = input()

loop_num = 1
is_match = False

#リストの中の値を、入力された文字列と順番に比較する
for name in name_list:
    if str == name:
        print(loop_num, "番目の", name, "と一致しました")
        is_match = True
    loop_num += 1

#リストの中に、一致するものがなかったとき
if is_match == False:
    print("一致する名前はありませんでした")
ロボた

「リストのための繰り返し」を使うときには、繰り返した回数を数えるための変数が必要だよ!

それと、リストの中に一致するものがあったかなかったかを判断するための、フラグ変数も必要だよ!

ロボち

問題2
  •   以下の要件でプログラムを作ってください。
  • ・前の問題と同じ、10人分の名前のリストがあります。
  • ・キーボードから、名前の一部を入力します。
  • ・まず、「【入力された文字列】を含む名前を探します」と表示します。
  • ・リストの中に、キーボードから入力された文字列と一部が一致するものがあるか探索します。
  • ・そして、一致するものあれば、そのときの名前を表示します。
  • ・探索完了後に、「一部が一致したものが、◯件ありました」と表示します。
  • ・また一致する名前がなかったときには、「該当するものはありませんでした」と表示します。
ロボた

こんどはリストの中の名前の一部と、キーボードから入力された文字列が一致するかどうかを判断する必要があるよ!

これまで、文字列Aと文字列Bがまったく同じかどうかを判断するために、「==」を使っていたよね!

ロボち
ロボた

文字列Aが文字列Bに含まれているかどうかを判断するためには、「in」を使うといいんだ!

部分文字列比較

キーボードから入力した文字列が左の「A」のほうで、リストの中の文字列が右の「B」の方ということになるよ!

ロボち
PRACTICE
name_list = ["高田智子", "上原明", "藤本光子", "今井美羽", "高橋隆史", "福田愛子", "菊池純", "松岡美樹", "中村拓志", "青木涼介"] str = input()

📖 解答例と解説

name_list = ["高田智子", "上原明", "藤本光子", "今井美羽", "高橋隆史",
             "福田愛子", "菊池純", "松岡美樹", "中村拓志", "青木涼介"]
str = input()

match_num = 0

print("【", str, "】を含む名前を探します")
for name in name_list:
    if str in name:
        print(name)
        match_num += 1

if match_num > 0:
    print("一部が一致したものが、", match_num, "件ありました")
else:
    print("該当するものはありませんでした")
ロボた

キーボードから入力するのは文字列だから、「int( )」は使わないよ!

名前の一部と一致したときの、数をカウントする変数が必要だよね!

ロボち
ロボた

「in」が使えるのは、文字列を比較するときだけだよ!

Pythonには、こんな便利なものがたくさんあるんだ!
他にもどんなのがあるか、自分で調べてみてね!

ロボち