[예제#2] 뽀모도로 타이머(콘솔 버전)

[예제#2] 뽀모도로 타이머(콘솔 버전)

한줄 요약:
25분 집중 + 5분 휴식 루틴을 콘솔 타이머로 만들어 생산성을 끌어올리자!


1. 목표

  • 집중 시간 25분 + 휴식 5분을 기본으로 카운트다운
  • 세트 수를 지정해 자동으로 반복
  • 타이머 종료 시 알림 문구/사운드(선택) 제공

2. 완성 코드 (복붙)

# 뽀모도로 타이머 (콘솔 버전)
# 기본: 25분 집중, 5분 휴식, 4세트
import time
import sys

def countdown(seconds, label):
    while seconds:
        m, s = divmod(seconds, 60)
        timer = f"{label} | {m:02d}:{s:02d}"
        print(timer, end="\r", flush=True)
        time.sleep(1)
        seconds -= 1
    print(f"{label} | 00:00", " " * 10)  # 줄 잔상 제거용 공백

def pomodoro(work_min=25, break_min=5, sets=4, long_break_min=15):
    try:
        for i in range(1, sets + 1):
            print(f"\n🍅 {i}세트 집중 시작! ({work_min}분)")
            countdown(work_min * 60, "집중")
            print("✅ 집중 종료! 잠깐 쉬어가요~")

            # 마지막 세트가 아니면 휴식
            if i < sets:
                # 4세트마다 긴 휴식 예시 (원하면 끄거나 조정 가능)
                if i % 4 == 0:
                    print(f"🧘 긴 휴식 {long_break_min}분 시작!")
                    countdown(long_break_min * 60, "긴 휴식")
                else:
                    print(f"☕ 휴식 {break_min}분 시작!")
                    countdown(break_min * 60, "휴식")
        print("\n🎉 모든 세트 완료! 고생했어요 👏")
    except KeyboardInterrupt:
        print("\n⏸️ 타이머가 중단되었습니다. 다음에 다시 달려요!")

if __name__ == "__main__":
    # 기본값 그대로 실행 (원하면 아래 값을 바꾸세요)
    pomodoro(work_min=25, break_min=5, sets=4, long_break_min=15)

3. 사용 방법

  1. 위 코드를 pomodoro.py로 저장
  2. 터미널에서 실행 python pomodoro.py
  3. 기본값(25/5/4세트)으로 시작
    • 변경하고 싶으면 마지막 줄의 인자를 수정 pomodoro(work_min=20, break_min=3, sets=3, long_break_min=10)

✨ 기능 설명

  • 카운트다운 표시: 집중 | MM:SS 형태로 실시간 업데이트
  • 세트 반복: sets만큼 자동 반복
  • 긴 휴식: 4세트마다 long_break_min 적용(원치 않으면 조건 제거)
  • 중간 종료: Ctrl + C로 안전 중단(KeyboardInterrupt 처리)

🔊 (선택) 소리 알림 추가하고 싶다면

  • Windows라면 winsound 모듈로 간단히 알림음 추가 가능: import winsound def beep(): winsound.Beep(880, 300) # (주파수, 밀리초) # 카운트다운 끝난 뒤 beep()
  • macOS/Linux라면 터미널에 벨문자 출력(환경에 따라 동작 다름): print("\a")

4. 자주 하는 오류 & 해결

증상원인해결
시간이 너무 느리게 흐름time.sleep(1)이 누적 지연콘솔 과도한 출력 피하고, 다른 앱 최소화
KeyboardInterrupt 메시지Ctrl + C로 중단정상 동작, 예외 처리로 안내 문구 출력
한글 깨짐터미널 인코딩 문제UTF-8 권장, Windows 콘솔 글꼴/코드페이지 확인

5. 확장 아이디어

  • 세트별 로그 파일로 남기기(log.txt)
  • 집중/휴식 시간 사용자 입력 받기
  • GUI로 만들기: tkinter로 진행바 + 버튼 추가
  • 웹 버전: Flask/Streamlit 등으로 브라우저 타이머 구현

이전 강좌 👈 [기초#9] 프로젝트 예제: 미니 계산기 만들기
다음 강좌 👉 [예제#3] 비밀번호 생성기: 안전한 랜덤 패스워드 만들기

댓글 남기기

광고 차단 알림

광고 클릭 제한을 초과하여 광고가 차단되었습니다.

단시간에 반복적인 광고 클릭은 시스템에 의해 감지되며, IP가 수집되어 사이트 관리자가 확인 가능합니다.