본문 바로가기
오픈소스를 위한 기초 상식

파이썬 기초 실습_ 데일리 플래너 만들기

by 지나가는 프로도 2025. 1. 21.

실습 코드

더보기

def todo_list_manager():
    # 할 일 목록을 저장할 리스트
    tasks = []
    
    while True:
        print("\n=== 할 일 목록 관리 프로그램 ===")
        print("1. 할 일 추가")
        print("2. 할 일 목록 보기")
        print("3. 할 일 완료 체크")
        print("4. 할 일 삭제")
        print("5. 프로그램 종료")
        
        # 사용자 선택 입력받기
        try:
            choice = input("\n원하는 기능을 선택하세요 (1-5): ")
            
            # 종료 조건
            if choice == '5':
                print("프로그램을 종료합니다.")
                break
                
            # 할 일 추가
            elif choice == '1':
                task = input("추가할 할 일을 입력하세요: ")
                if task.strip() == "":  # 빈 문자열 체크
                    print("할 일을 입력해주세요!")
                    continue
                tasks.append({"task": task, "completed": False})
                print("할 일이 추가되었습니다.")
            
            # 할 일 목록 보기
            elif choice == '2':
                if not tasks:  # 리스트가 비어있는지 체크
                    print("할 일이 없습니다.")
                    continue
                    
                print("\n=== 할 일 목록 ===")
                for index, task in enumerate(tasks, 1):
                    status = "완료" if task["completed"] else "미완료"
                    print(f"{index}. {task['task']} [{status}]")
            
            # 할 일 완료 체크
            elif choice == '3':
                if not tasks:
                    print("할 일이 없습니다.")
                    continue
                    
                print("\n=== 할 일 목록 ===")
                for index, task in enumerate(tasks, 1):
                    status = "완료" if task["completed"] else "미완료"
                    print(f"{index}. {task['task']} [{status}]")
                    
                try:
                    task_num = int(input("\n완료할 할 일의 번호를 입력하세요: "))
                    if 1 <= task_num <= len(tasks):
                        tasks[task_num-1]["completed"] = True
                        print("할 일이 완료 처리되었습니다.")
                    else:
                        print("올바른 번호를 입력해주세요!")
                except ValueError:
                    print("숫자를 입력해주세요!")
            
            # 할 일 삭제
            elif choice == '4':
                if not tasks:
                    print("할 일이 없습니다.")
                    continue
                    
                print("\n=== 할 일 목록 ===")
                for index, task in enumerate(tasks, 1):
                    status = "완료" if task["completed"] else "미완료"
                    print(f"{index}. {task['task']} [{status}]")
                    
                try:
                    task_num = int(input("\n삭제할 할 일의 번호를 입력하세요: "))
                    if 1 <= task_num <= len(tasks):
                        deleted_task = tasks.pop(task_num-1)
                        print(f"'{deleted_task['task']}'가 삭제되었습니다.")
                    else:
                        print("올바른 번호를 입력해주세요!")
                except ValueError:
                    print("숫자를 입력해주세요!")
            
            else:
                print("올바른 메뉴를 선택해주세요!")
                
        except Exception as e:
            print("오류가 발생했습니다. 다시 시도해주세요.")
            continue

if __name__ == "__main__":
    todo_list_manager()

 

어떤 지식이 적용된지 알아보자

  • 변수 사용
  • tasks: 할 일 목록을 저장하는 리스트
  • choice: 사용자의 메뉴 선택을 저장
  • task: 새로운 할 일 내용을 저장
  • task_num: 선택한 할 일의 번호

 

  • 데이터 타입
  • 리스트(list): 할 일들을 저장
  • 딕셔너리(dict): 각 할 일의 내용과 완료 상태를 저장
  • 문자열(str): 사용자 입력과 메시지 출력
  • 정수(int): 할 일 번호 처리

 

  • 조건문(if-elif-else)
  • 메뉴 선택에 따른 동작 구분
  • 입력값 유효성 검사
  • 리스트가 비어있는지 확인

 

  • 반복문(while)
  • 프로그램 종료 전까지 메뉴 반복
  • for 반복문으로 할 일 목록 출력

 

  • 예외 처리(try-except)
  • 잘못된 메뉴 선택 처리
  • 숫자가 아닌 입력 처리
  • 일반적인 오류 상황 처리

 

  • 프로그램의 주요 기능:
  1. 할 일 추가
  2. 할 일 목록 보기
  3. 할 일 완료 체크
  4. 할 일 삭제

 

 

심화 코드: GUI 적용

더보기

def todo_list_manager():
    # 할 일 목록을 저장할 리스트
    tasks = []
    
    while True:
        print("\n=== 할 일 목록 관리 프로그램 ===")
        print("1. 할 일 추가")
        print("2. 할 일 목록 보기")
        print("3. 할 일 완료 체크")
        print("4. 할 일 삭제")
        print("5. 프로그램 종료")
        
        # 사용자 선택 입력받기
        try:
            choice = input("\n원하는 기능을 선택하세요 (1-5): ")
            
            # 종료 조건
            if choice == '5':
                print("프로그램을 종료합니다.")
                break
                
            # 할 일 추가
            elif choice == '1':
                task = input("추가할 할 일을 입력하세요: ")
                if task.strip() == "":  # 빈 문자열 체크
                    print("할 일을 입력해주세요!")
                    continue
                tasks.append({"task": task, "completed": False})
                print("할 일이 추가되었습니다.")
            
            # 할 일 목록 보기
            elif choice == '2':
                if not tasks:  # 리스트가 비어있는지 체크
                    print("할 일이 없습니다.")
                    continue
                    
                print("\n=== 할 일 목록 ===")
                for index, task in enumerate(tasks, 1):
                    status = "완료" if task["completed"] else "미완료"
                    print(f"{index}. {task['task']} [{status}]")
            
            # 할 일 완료 체크
            elif choice == '3':
                if not tasks:
                    print("할 일이 없습니다.")
                    continue
                    
                print("\n=== 할 일 목록 ===")
                for index, task in enumerate(tasks, 1):
                    status = "완료" if task["completed"] else "미완료"
                    print(f"{index}. {task['task']} [{status}]")
                    
                try:
                    task_num = int(input("\n완료할 할 일의 번호를 입력하세요: "))
                    if 1 <= task_num <= len(tasks):
                        tasks[task_num-1]["completed"] = True
                        print("할 일이 완료 처리되었습니다.")
                    else:
                        print("올바른 번호를 입력해주세요!")
                except ValueError:
                    print("숫자를 입력해주세요!")
            
            # 할 일 삭제
            elif choice == '4':
                if not tasks:
                    print("할 일이 없습니다.")
                    continue
                    
                print("\n=== 할 일 목록 ===")
                for index, task in enumerate(tasks, 1):
                    status = "완료" if task["completed"] else "미완료"
                    print(f"{index}. {task['task']} [{status}]")
                    
                try:
                    task_num = int(input("\n삭제할 할 일의 번호를 입력하세요: "))
                    if 1 <= task_num <= len(tasks):
                        deleted_task = tasks.pop(task_num-1)
                        print(f"'{deleted_task['task']}'가 삭제되었습니다.")
                    else:
                        print("올바른 번호를 입력해주세요!")
                except ValueError:
                    print("숫자를 입력해주세요!")
            
            else:
                print("올바른 메뉴를 선택해주세요!")
                
        except Exception as e:
            print("오류가 발생했습니다. 다시 시도해주세요.")
            continue

if __name__ == "__main__":
    todo_list_manager()