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를 적어 할당해 줄거야