レコード#
- 今日は新しい知識を学びませんでしたが、配列の使用方法を練習しました。
- 正解と自分のコードを比較してみましたが、答えのコードの方がプログラマらしいコードで、より抽象的です。私のコードはただの日記のようです。でも 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(
"To Doリストからアイテムを表示、追加、編集、削除しますか?")
menu = input()
if menu == "add":
mytxt = input("何を追加しますか\n")
add(mytxt)
elif menu == "view":
view()
elif menu == "edit":
mytxt1 = input("何を削除しますか\n")
mytxt2 = input("何に変更しますか?\n")
remove(mytxt1)
add(mytxt2)
elif menu == "remove":
mytxt1 = input("何を削除しますか\n")
sure = input(f"削除: {mytxt1}。はい or いいえ\n")
if sure == "はい":
remove(mytxt1)
else:
continue