記錄#
- 今天學習文件的讀寫操作。
- 比較特別的意思是將陣列或字典寫入到文件的時候,需要使用 str () 函數把這種資料轉為字串。
- 那再讀取的時候,就需要用 eval () 函數把字串轉為動態可執行的程式碼。
- 今天這節課剛開始的時候有點迷迷糊糊,在 eval () 的使用上紐結了很久。直到在練習今天編碼的時候才明白其中的邏輯,為什麼要 str 和 eval。
- 還是有一點,寫文件和 RAM 有什麼關係?這節課 RAM 的用法或知識點在什麼地方體現了?我還是不明白。
- 今天的練習是對 45 的編碼進行完善,增加寫文件和讀文件的操作。第一次運行程式碼會報錯,光頭大哥說明天解決這個問題,哈哈哈!
CODE#
import os
print("🌟生活組織者🌟")
print()
todolist = []
todoinfo = []
f = open("to.do", "r")
todolist = eval(f.read())
f.close
def todoprint():
for row in todolist:
for name in row:
print(f"{name: ^10}", end=" | ")
print()
select = "again"
while True:
os.system("clear")
if select == "again":
print("菜單: ")
print("1: 新增 ")
print("2: 刪除 ")
print("3: 查看 ")
print("4: 編輯 ")
menu = input("")
if menu.strip().lower()[0] == "a":
task = input("任務是什麼? > ")
due = input("截止日期是? > ")
priority = input("優先級是多少? > ")
todoinfo = [task, due, priority]
todolist.append(todoinfo)
print("謝謝,這個任務已經被新增。")
todoprint()
elif menu.strip().lower()[0] == "r":
name = input("你想要刪除哪個任務? > ")
for row in todolist:
if name in row:
todolist.remove(row)
print("謝謝,這個任務已經被刪除。")
else:
print(f"{name} 不在任務清單中")
elif menu.strip().lower()[0] == "v":
todoprint()
elif menu.strip().lower()[0] == "e":
name = input("你想要刪除哪個任務? > ")
for row in todolist:
if name in row:
todolist.remove(row)
print("謝謝,這個任務已經被刪除。")
else:
print(f"{name} 不在任務清單中")
task = input("任務是什麼? > ")
due = input("截止日期是? > ")
priority = input("優先級是多少? > ")
todoinfo = [task, due, priority]
todolist.append(todoinfo)
print("謝謝,這個任務已經被新增。")
todoprint()
f = open("to.do", "w")
f.write(str(todolist))
f.close()
elif select == "quit":
break
select = input("你想要再次查看菜單還是退出? ")