レコード#
- 今日は新しい知識を学びませんでしたが、配列の使い方を練習しました。
- 正解と自分のコードを比較してみましたが、答えのコードの方がプログラマらしいコードで、もう少し抽象的です。私のコードはただの記録のようです。でも chatgpt はそう言っています。
- 最初のコードは私が書いたものです。ハハ
これらの 2 つのコードは、シンプルなタスクリスト管理プログラムです。基本的な機能は同じですが、実装方法とコードの構造にはいくつかの違いがあります。以下はこれらの 2 つのコードの利点と欠点の比較です:
最初のコードの利点:
- 異なる操作をカプセル化するために、より多くの関数を使用しており、コードが読みやすく、メンテナンス性が高くなっています。
- タスクリストの表示、追加、編集、削除の機能を提供し、柔軟性と機能の完全性を持っています。
- 編集機能では、指定されたアイテムを削除してから新しいアイテムを追加することで、操作の一貫性を保っています。
最初のコードの欠点:
- グローバル変数
mylist
を使用してタスクリストを保存しており、クラスや関数にカプセル化する代わりに、拡張性と再利用性が制限される可能性があります。 - コード中には、ターミナル画面をクリアするコマンド
os.system("clear")
などのハードコーディングされた部分があり、柔軟性と移植性に欠けています。
2 番目のコードの利点:
- タスクリストの操作を異なる関数にカプセル化しており、コードが読みやすく、メンテナンス性が高くなっています。
printList()
関数を使用してタスクリストを表示することで、コードの構造がより明確になっています。- アイテムの削除時に、ユーザーの確認機能が追加され、操作の安全性が向上しています。
2 番目のコードの欠点:
- グローバル変数
toDoList
を使用してタスクリストを保存しており、拡張性と再利用性に影響を与える可能性があります。 - ユーザーの入力の妥当性検証やエラーハンドリングが不足しており、プログラムのクラッシュや誤った結果の発生の可能性があります。
- 特定のアイテムを編集する機能など、いくつかの機能が欠けています。
以上のように、これらの 2 つのコードは機能と読みやすさを持っていますが、改善の余地があります。具体的な要件や好みに応じて、適切なコードバージョンを選択し、必要に応じて改善や拡張を行うことができます。
import os, time
print("To Doリストマネージャー")
print()
mylist = []
def view():
for item in mylist:
print(item)
time.sleep(2)
os.system("clear")
def add(l):
if l in mylist:
print(f"{l}はリストにあります")
else:
mylist.append(l)
print("追加成功")
time.sleep(1)
os.system("clear")
def remove(l):
if l in mylist:
mylist.remove(l)
else:
print(f"{l}はリストにありません。")
while True:
print(
"表示、追加、編集、または削除する項目を選択してください。")
menu = input()
if menu == "追加":
mytxt = input("何を追加しますか\n")
add(mytxt)
elif menu == "表示":
view()
elif menu == "編集":
mytxt1 = input("何を削除しますか\n")
mytxt2 = input("何に変更しますか?\n")
remove(mytxt1)
add(mytxt2)
elif menu == "削除":
mytxt1 = input("何を削除しますか\n")
sure = input(f"削除: {mytxt1}。はいまたはいいえ\n")
if sure == "はい":
remove(mytxt1)
else:
continue