프로그램 요구 사항
1개월의 달력을 출력하는 프로그램을 작성하시오.
- 사용자는 한 달의 최대 일수(28-31)와 1일의 시작 요일(0-6)을 입력한다.
- 0: 일요일, 1: 월요일, …, 6: 토요일을 의미한다.
- 입력받은 정보를 바탕으로, 해당 월의 달력을 보기 좋게 출력한다.
- 달력은 요일 제목(일, 월, 화, 수, 목, 금, 토)과 날짜를 포함하며, 날짜는 1일부터 시작한다.
- 날짜는 1주 단위로 정렬되고, 시작 요일에 맞게 공백을 추가하여 출력한다.
나의 풀이
# 사용자 입력 받기
days_in_month = int(input("한 달의 최대 일수를 입력하세요 (28~31): "))
start_day = int(input("1일의 시작 요일을 입력하세요 (0: 일, 1: 월, ..., 6: 토): "))
# 요일 제목 출력
days = ["일", "월", "화", "수", "목", "금", "토"]
print(" ".join(days))
# 첫 주의 공백 출력
print(" " * start_day, end="")
# 날짜 출력
for day in range(1, days_in_month + 1):
print(f"{day:2}", end=" ")
# 요일이 토요일(6)이면 줄 바꿈
if (start_day + day) % 7 == 0:
print()
- join()은 리스트의 요소들을 특정 구분자로 연결해 하나의 문자열로 만드는 함수이다. " "(두 칸 공백) 구분자가 days 리스트의 각 요소 사이에 삽입되어 다음과 같이 동작한다.
["일", "월", "화", "수", "목", "금", "토"] → "일 월 화 수 목 금 토"
- end=""는 줄바꿈을 방지을 방지하기 위해 추가되었다. 기본적으로 파이썬에서 print 문에서 줄 바꿈을 지원하기 때문에 줄바꿈을 방지하기 위해서는 이와 같은 추가 설정이 필요하다.
- f"{day:2}"는 날짜를 최소 2칸의 폭으로 출력하는 포맷 문자열이다. 이렇게 하면 날짜가 보기 좋게 정렬된다.
• day = 5 → " 5" (앞에 공백 하나 포함, 총 2칸)
• day = 15 → "15" (공백 없음, 총 2칸)
실행 결과
한 달의 최대 일수와, 1일의 시작 요일을 입력하니 달력이 보기 좋게 잘 만들어진다.
참고
'Language > Python' 카테고리의 다른 글
[Python] 파이썬 리스트 비교, 정렬 (0) | 2025.01.15 |
---|---|
[Python] 파이썬 리스트의 기초 연산들 (요소 추가, 삭제, 삽입 등) (0) | 2025.01.15 |
[Python] 파이썬 인덱싱과 슬라이싱 (0) | 2025.01.14 |
[Python] 파이썬 시퀀스 데이터 타입 (0) | 2025.01.14 |
[Python] 파이썬 리스트 이해하기 (0) | 2025.01.14 |