[예제#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. 사용 방법
- 위 코드를
pomodoro.py로 저장 - 터미널에서 실행
python pomodoro.py - 기본값(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] 비밀번호 생성기: 안전한 랜덤 패스워드 만들기