現在の見出し:1.2節:Todo検索・削除機能の作成
見出し一覧
- 1.2節:Todo検索・削除機能の作成
- - in演算子による部分一致検索機能の実装
- - pop()メソッドによる番号指定削除機能の実装
【PR】『Python』を学べる企業・個人向けのプログラミングコース
in演算子による部分一致検索機能の実装
第1章1.2節では、「in演算子による部分一致検索機能」と「pop()メソッドメソッドは特定の処理をまとめたプログラムの塊です。による番号指定削除機能」を実装していきます。
まず始めに、前のセクションで作成したコードを基盤として、Todo項目の検索機能を追加します。Todo項目が10件、20件と増加した際に、すべての項目を確認して目的の項目を探すのは非効率的です。そこで、ユーザーが入力したキーワードで絞り込む部分一致検索機能を実装することで、必要な項目を素早く見つけられるようになります。
検索機能の実装には、以下の3つの技術要素を組み合わせて使用します。
処理段階 | 使用技術 | 実装内容 | 結果 |
---|---|---|---|
キーワード入力 | input()関数関数は一定の処理をまとめたプログラムの塊です。 | ユーザーから検索したい文字列文字列は文字の並びを表現するデータ型で、テキストデータを扱うための基本的な構造として広く使用されています。を受け取る | 「勉強」「買い物」などのキーワード取得 |
項目確認 | forfor文はプログラミングの繰り返し制御構文で、指定回数や条件に基づき特定コードを反復実行でき、コードの簡潔さと可読性を向上させます。文 + enumerate() | Todo項目を番号付きで順次取得してループループは一連の命令を繰り返し実行する構造です。処理 | 「1. 買い物に行く」「2. 宿題をする」を順次確認 |
一致判定 | in演算子 | キーワードがTodo項目内に含まれるかを判定 | 「勉強」が「宿題をする」に含まれる場合はTrue |
結果表示 | 条件分岐条件分岐はプログラム内で指定した条件によって処理の分岐を行う制御構造です。 + print() | 該当項目の表示または「見つからない」メッセージ | 該当する項目を番号付きで表示 |
まず、input()関数でユーザーから検索キーワードを文字列として受け取り、for文とenumerate()でTodo項目を番号付きで順次確認します。そして、in演算子を使用してキーワードがTodo項目内に含まれているかを判定し、該当する項目のみを表示する仕組みを構築します。
# コード
# Todo管理用のリストを初期化
todos = []
# サンプルデータを追加
todos.append("買い物に行く")
todos.append("宿題をする")
# ユーザーから新しいTodoを入力
content = input("Todo内容を入力: ")
# 入力されたTodoをリストに追加
todos.append(content)
# 追加完了メッセージを表示
print(f"'{content}' を追加しました")
# 番号付きTodo一覧を表示
print("\n=== Todo一覧 ===")
for i, todo in enumerate(todos, 1):
print(f"{i}. {todo}")
# Todo項目数を表示
print(f"全{len(todos)}件のTodo")
# Todo検索機能を実装
keyword = input("\n検索キーワードを入力: ")
print(f"\n'{keyword}' を含むTodo:")
found = False
for i, todo in enumerate(todos, 1):
if keyword in todo:
print(f"{i}. {todo}")
found = True
if not found:
print("該当するTodoが見つかりませんでした")
# 実行結果
Todo内容を入力: プログラムの勉強
'プログラムの勉強' を追加しました
=== Todo一覧 ===
1. 買い物に行く
2. 宿題をする
3. プログラムの勉強
全3件のTodo
検索キーワードを入力: 勉強
'勉強' を含むTodo:
2. 宿題をする
3. プログラムの勉強
行数 | 種別 | コード | 解説 |
---|---|---|---|
26行目 | 新規 | keyword = input("\n検索キーワードを入力: ") |
ユーザーから検索したいキーワードを文字列として入力受付します |
27行目 | 新規 | print(f"\n'{keyword}' を含むTodo:") |
検索結果のヘッダーとして入力されたキーワードを表示します |
28行目 | 新規 | found = False |
検索結果が見つかったかを追跡するフラグ変数変数はデータを一時的に記憶しておく場所です。を初期化します |
30行目 | 新規 | for i, todo in enumerate(todos, 1): |
Todo項目を番号付きで順次取得するループ処理を開始します |
31行目 | 新規 | if keyword in todo: |
in演算子でキーワードがTodo項目内に含まれるかを判定します |
32行目 | 新規 | print(f"{i}. {todo}") |
該当するTodo項目を番号付きで表示します |
33行目 | 新規 | found = True |
検索結果が見つかったことをフラグ変数で記録します |
35行目 | 新規 | if not found: |
検索結果が見つからなかった場合の条件判定を行います |
36行目 | 新規 | print("該当するTodoが見つかりませんでした") |
検索結果が見つからない場合の適切なメッセージを表示します |
- in演算子:Pythonマスター講座 第2章2.4節Pythonマスター講座第2章 2.4節では、Pythonの演算子に関する内容を学べますで解説
- if文:Pythonマスター講座 第3章3.2節Pythonマスター講座第3章 3.2節では、Pythonの条件分岐に関する内容を学べますで解説
- ブール型:Pythonマスター講座 第2章2.3節Pythonマスター講座第2章 2.3節では、Pythonのデータ型に関する内容を学べますで解説
- enumerate():Pythonマスター講座 第3章3.3節Pythonマスター講座第3章 3.3節では、Pythonの繰り返し処理(for文)に関する内容を学べますで解説