前回に引き続き、タスク管理アプリの解説をしていきます。
1-1を見ていない方は、下記のURLからご覧ください!

【コピペで使えるPython】タスク管理アプリを作ろう 1-1
Pythonを学びたい方のために、すぐに動くタスク管理アプリのサンプルコードを作成しました。簡単なコードの組み合わせですが、基礎知識を学べるようなコードです!3ステップに分けて、実際にアプリを作りながら学べる内容となっています。今回は、アプ...
完成形のコードを見てみましょう
まずは、前回同様コード全体を確認していきましょう。
サンプルコードをクリックすると全体のコードが表示されます。
#!/usr/bin/env python3
import sys
# タスクの追加
def add_task(mytask):
# ユーザーが入力したタスクを追加
add = input("追加タスク(追加を辞める場合は 0 と入力):")
# 追加をやめる場合
if add == "0":
print("追加をキャンセルしました。")
return
# 追加
mytask.append(add)
print(f"タスク「{add}」を追加しました。")
# タスク一覧の表示
def task_list(mytask):
if not mytask:
print("表示するタスクがありません。")
return
else:
print("===== タスク一覧 =====")
for index, task in enumerate(mytask):
print(f"{str(index + 1)}. {task}")
print("======================")
# タスクの削除
def delete_task(mytask):
if not mytask:
print("削除するタスクがありません。")
return
else:
while True:
# 削除対象を選べるように一覧表示
print("===== タスク一覧 =====")
for index, task in enumerate(mytask):
print(f"{index + 1}. {task}")
print("======================")
delete_number = input("削除するタスク番号(削除を辞める場合は 0 と入力):")
try:
# 数字が選択された場合
index = int(delete_number)
# 削除をやめる場合
if index == 0:
print("削除をキャンセルしました。")
break
# 削除
elif 1 <= index <= len(mytask):
# 選択された番号のタスクを削除
mytask.pop(index - 1)
break
else:
print("その番号のタスクは存在しません。")
print()
except ValueError:
print("番号は数字で入力してください")
# アプリを終了
def exit_app(mytask):
if mytask:
show = input("残りのタスクを表示しますか? (y/n):")
if show.lower() == "y":
print("===== 残りのタスク =====")
for index, task in enumerate(mytask):
print(f"{str(index + 1)}. " + task)
print("======================")
else:
print("残りタスクはありません")
sys.exit()
# 操作リストの表示
def display_operations():
print("===== 操作メニュー =====")
operation_list = [
"1. タスクを追加する",
"2. タスク一覧を見る",
"3. タスクを削除する",
"4. アプリを終了する"
]
for task in operation_list:
print(task)
print("======================")
# ユーザーの入力に基づいた処理
def execution_operation(mytask):
execution = input("番号を選んでください:")
print()
# 有効な番号が入力された場合、その番号の操作を実行
if execution in operations:
operations[execution](mytask)
else:
print("無効な選択です。もう一度試してください。")
# 操作に対応する関数のマッピング
operations = {
"1": add_task,
"2": task_list,
"3": delete_task,
"4": exit_app
}
# メイン処理
def main():
# タスクを格納するリスト
mytask = []
while True:
# 操作リスト
display_operations()
# 実操作
execution_operation(mytask)
print("\n\n")
if __name__ == "__main__":
main()
コードの解説
ユーザーの入力に基づいた処理を行う execution_operation(mytask):
# ユーザーの入力に基づいた処理
def execution_operation(mytask):
execution = input("番号を選んでください:")
print()
# 有効な番号が入力された場合、その番号の操作を実行
if execution in operations:
operations[execution](mytask)
else:
print("無効な選択です。もう一度試してください。")
# 操作に対応する関数のマッピング
operations = {
"1": add_task,
"2": task_list,
"3": delete_task,
"4": exit_app
}
input()
は、ユーザーのキーボード入力を取得するための関数です。ここでは、操作メニューの番号(1〜4)を入力してもらい、その番号に対応する処理を行う仕組みです。print()
は、画面上での可読性を高めるための空行出力です。
ユーザーが操作した結果がメニューのすぐ下に続かないようにして、見やすく整えています。if execution in operations:
では、ユーザーが入力した番号が操作一覧operations
に存在するかをチェックしています。該当する場合はoperations[execution](mytask)
によって、対応する関数が実行されます。無効な番号の場合は、「無効な選択です。もう一度試してください。」と表示し、再び操作メニューが表示されます。- この流れは、
main()
関数内のwhile True:
によってループ処理されているため、ユーザーが「アプリを終了する」を選ぶまで繰り返されます。
while True:
# 操作リスト
display_operations()
# 実操作
execution_operation(mytask)
print("\n\n")
下記の辞書は、ユーザーが入力した番号(文字列)と、それに対応する関数を結びつけています。
例えば “1” を入力すれば add_task() が実行されるという仕組みです。
# 操作に対応する関数のマッピング
operations = {
"1": add_task,
"2": task_list,
"3": delete_task,
"4": exit_app
}
このように辞書を使って関数を管理することで、分岐処理を簡潔に書くことができ、機能追加も柔軟に行える構造になります。
タスクの追加 add_task(mytask):
この関数は、ユーザーが新しいタスクを追加できるようにする処理です。execution_operation(mytask)
でユーザーが「1」を入力したときに呼び出されます。
# タスクの追加
def add_task(mytask):
# ユーザーが入力したタスクを追加
add = input("追加タスク(追加を辞める場合は 0 と入力):")
# 追加をやめる場合
if add == "0":
print("追加をキャンセルしました。")
return
# 追加
mytask.append(add)
print(f"タスク「{add}」を追加しました。")
input()
でタスクの内容をユーザーに尋ねます。
add = input("追加タスク(追加を辞める場合は 0 と入力):")
- ユーザーが
"0"
を入力した場合
追加をキャンセルしたと判断し、メッセージを表示して、return
で関数の処理を中断し、メニュー画面に戻ります。
if add == "0":
print("追加をキャンセルしました。")
return
-
"0"
以外を入力した場合
入力された文字列をタスクリストmytask
に追加し、タスク追加を知らせるメッセージを表示
mytask.append(add)
print(f"タスク「{add}」を追加しました。")
mytask
はリストとしてmain()
から渡されており、ここでの変更は全体に共有されるreturn
を使って関数の処理を早期終了することで、無駄な処理を防いでいる
タスク一覧の表示 task_list(mytask):
この関数は、現在登録されているタスクの一覧をコンソール上に表示します。
ユーザーが操作メニューで「2. タスク一覧を見る」を選んだときに呼び出されます。
# タスク一覧の表示
def task_list(mytask):
if not mytask:
print("表示するタスクがありません。")
return
else:
print("===== タスク一覧 =====")
for index, task in enumerate(mytask):
print(f"{str(index + 1)}. {task}")
print("======================")
mytask
(タスクのリスト)が空(=タスク未登録)の場合、 「表示するタスクがありません。」と表示して、return
によって、それ以降の処理はスキップされ、再びメニュー画面に戻ります。
if not mytask:
print("表示するタスクがありません。")
return
- タスクの件数に応じて、1行ずつ一覧表示。
enumerate(mytask)
を使うことで、インデックス(連番)とタスク内容の両方を簡単に扱えます。- 表示番号は
index + 1
として、1から始まるように調整。番号付きで出力しているため、削除などの操作時に番号指定しやすくなる構成になっている。
print("===== タスク一覧 =====")
for index, task in enumerate(mytask):
print(f"{str(index + 1)}. {task}")
print("======================")
まとめ
今回は、タスク管理アプリの全体像から、実際の操作の追加と一覧表示を紹介しました。
残るは、削除と終了だけになり、だいぶ形になってきましたね。
実際に動くものが出来上がってくるとワクワクしますよね。
最後まで頑張りましょう!!