CLI 기반 프로젝트는 command line interface의 약어로 직역하면 명령줄 인터페이스이다. 사용자가 터미널에서 텍스트로 입력하고 프로그램이 텍스트로 출력하는 형태의 프로그램이다.
이와 다른 개념으로 자주 들어본 GUI 가 있었는데 Graphical User Interface로 마우스로 클릭하거나, 버튼/창/드래그 등으로 조작하는 인터페이스를 말한다. 카카오톡, 메모장, 웹사이트 앱, visual studio code
전체 코드 첨부
import os, json
def save_tasks():
with open("tasks", "w") as f:
json.dump(tasks, f)
def load_tasks():
global tasks
try:
with open("tasks", "r") as f:
tasks = json.load(f)
except FileNotFoundError:
tasks = []
load_tasks()
def show_menu():
print("\\n=== TODO 리스트 ===")
print("1. 할 일 추가")
print("2. 할 일 목록 보기")
print("3. 할 일 완료 표시")
print("4. 할 일 삭제")
print("5. 저장하고 종료")
while True:
show_menu()
choice = input("메뉴 선택 (1~5): ")
if choice == "1":
task = input("할 일 입력: ")
tasks.append({"task": task, "done": False})
print("추가 완료!")
elif choice == "2":
print("\\n[현재 할 일 목록]")
for i, t in enumerate(tasks):
status = "✓" if t["done"] else " "
print(f"{i+1}. [{status}] {t['task']}")
elif choice == "3":
try:
num = int(input("완료한 할 일 번호: ")) - 1
if 0 <= num < len(tasks):
tasks[num]["done"] = True
print("완료 처리됨!")
else:
print("번호가 잘못됨!")
except ValueError:
print("숫자를 입력해야 합니다!")
elif choice == "4":
num = int(input("삭제할 할 일 번호: ")) - 1
if 0 <= num < len(tasks):
removed = tasks.pop(num)
print(f"'{removed['task']}' 삭제됨!")
else:
print("번호가 잘못됨!")
elif choice == "5":
print("저장하고 종료합니다.")
save_tasks()
break
else:
print("1~5 중에서 선택하세요.")
import json
json이라는 파이썬 모듈에서 내장된 함수를 사용하겠다는 의미지
이 모듈은 파이썬 객체를 JSON형식으로 저장하거나, JSON 데이터를 파이썬 객체로 변환하는 기능을 제공한다.
| 기능 | 함수 이름 | 예시 |
|---|---|---|
| 파이썬 → JSON(파일로 저장) | json.dump() | json.dump(tasks, f) |
| JSON → 파이썬 (파일에서 불러오기) | ||
| json.load() | ||
| tasks = json.load(f) | ||
| 파이썬 → JSON (문자열로 변환) | ||
| json.dumps() | json_string = json.dumps(tasks) | |
| JSON → 파이썬 (문자열 파싱) | ||
| json.loads() | ||
| tasks = json.loads(json_string) | ||
# 저장 함수
def save_tasks():
with open("tasks.txt", "w") as f:
json.dump(tasks, f)
****def save_tasks():
save_tasks라는 이름의 함수 정의 시작, 호출되면 안에 있는 코드 실행됨
****with open(tasks.txt,”w”) as f:
json.dump(tasks, f) 우선 tasks는 전역 변수로 이 변수에 우리가 앞으로 todo list를 적어 할당해 줄거야