실습 코드
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)
- 잘못된 메뉴 선택 처리
- 숫자가 아닌 입력 처리
- 일반적인 오류 상황 처리
- 프로그램의 주요 기능:
- 할 일 추가
- 할 일 목록 보기
- 할 일 완료 체크
- 할 일 삭제
심화 코드: 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()
'오픈소스를 위한 기초 상식' 카테고리의 다른 글
Pandas: Python 데이터 처리의 강력한 도구 (0) | 2025.01.23 |
---|---|
HTML과 CSS의 기본 이해: 웹 개발의 첫걸음 (0) | 2025.01.23 |
파이썬 기초 실습_ 숫자 맞추기 게임 (0) | 2025.01.18 |
파이썬 기초 실습_ 사칙 연산 계산기 만들기 (0) | 2025.01.16 |
조건문과 반복문: 파이썬에서 논리와 흐름을 제어하는 힘 (0) | 2025.01.14 |