728x90
반응형
우리 학교 파이썬 수업 과제였습니다 ㅋㅋㅋㅋ
정말 한참 수정할게 많지만 나중에 하는걸로 하고 지금은 백업용으로 올립니다.
나름 리스트에 해당 년도 달력을 전부 넣고 싶어서 고민좀 했습니다.
WOD.py
# 모듈
import turtle
import returnday
# 터틀 입력창으로 연도 입력 받기 및 터틀 설정
turtle.title("달력 만들기")
turtle.hideturtle()
turtle.speed(0)
inputYear = int(turtle.numinput("달력 만들기", "표시할 달력의 연도를 입력하시오."))
print("%d" % (inputYear))
print()
# 터틀 창 테두리 꾸미기
turtle.penup()
turtle.pensize(3)
turtle.goto(-457, 387)
turtle.pendown()
turtle.forward(910)
turtle.penup()
turtle.right(90)
turtle.forward(95)
turtle.right(90)
turtle.pendown()
turtle.forward(910)
turtle.penup()
# 달력 연도 꾸미기
turtle.penup()
turtle.goto(440, 308)
turtle.pencolor("black")
turtle.write("Calendar %dy" % (inputYear), align = "right", font = ("Bahnschrift", 45, "normal"))
# 일 배열 입력
arrayDay = []
for i in range(12):
arrayDay.append(list(returnday.month_range(inputYear, i + 1)))
print(arrayDay, end="\n\n")
# 월 영어
arrEngMonth = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]
eng_y = 440
indexArrEngMonth = 0
# 월 배열 출력
for i in range(12):
eng_x = -340
eng_y -= 220
for u in range(4):
if indexArrEngMonth == 12:
break
turtle.goto(eng_x,eng_y)
turtle.pencolor("black")
turtle.write("%s" % arrEngMonth[indexArrEngMonth], align = "center", font = ("Bahnschrift", 25, "normal"))
indexArrEngMonth += 1
eng_x += 225
# 월별 일 입력 및 출력
arrayCalendarDay = []
eng_weekOfTheDay = ["S", "M", "T", "W", "T", "F", "S"]
arrColor = ["#930000", "black", "black", "black", "black", "black", "#005A81"]
# 리스트 7 * 7 * 12
for mm in range(12):
for i in range(7):
arrayCalendarDay.append([None] * 7)
m = 0
nummm = 0
frist_1 = 1
frist_2 = 2
wod_x = -414
wod_y = 190
wod_x_1 = 0
day_y_1 = 165
y_2 = 0
# 달력 출력
for num in range(12):
day = 1
isMonth = arrayDay[num][0] # 1일이 어느 요일에 있는지
isDay = arrayDay[num][1] # 그 달이 며칠까지 있는지
# 4열 출력후 아래로 계속 출력
if m == 4:
wod_x = -414
wod_y -= 218
day_y_1 -= 218
m = 0
# 요일 출력
for i in range(7):
arrayCalendarDay[nummm][i] = eng_weekOfTheDay[i]
turtle.goto(wod_x, wod_y)
turtle.pencolor(arrColor[i])
if i == 0:
wod_x_1 = wod_x
wod_y_1 = wod_y - 50
turtle.write("%s" % arrayCalendarDay[nummm][i], align = "right", font = ("Bahnschrift", 10, "normal"))
wod_x += 26
# 월 첫 주 먼저 출력
for i in range(frist_1, frist_1 + 1):
# 일 당기기
day_x_1 = wod_x_1 + isMonth * 26
for u in range(isMonth, 7):
arrayCalendarDay[i][u] = day
turtle.goto(day_x_1, day_y_1)
turtle.pencolor(arrColor[u])
turtle.write("%d" % arrayCalendarDay[i][u], align = "right", font = ("Bahnschrift", 10, "normal"))
day_x_1 += 26
day += 1
# 그다음 출력
for i in range(frist_2, frist_2 + 5):
day_x_2 = wod_x_1
day_y_2 = wod_y_1
# 일이 해당 일보다 초과하면 다음으로 넘어감
for u in range(7):
if day > isDay:
break
arrayCalendarDay[i][u] = day
day += 1
turtle.goto(day_x_2, day_y_2)
turtle.pencolor(arrColor[u])
turtle.write("%d" % arrayCalendarDay[i][u], align = "right", font = ("Bahnschrift", 10, "normal"))
day_x_2 += 26
wod_y_1 -= 25
wod_x += 40
nummm += 7
frist_1 += 7
frist_2 += 7
m += 1
print(arrayCalendarDay)
turtle.done()
# 끝
returnday.py
def month_range(year, month):
ins_year = 1
ins_month = 1
ins_now_month = 0
while True:
now_month = 31
if ins_month == 4 or ins_month == 6 or ins_month == 9 or ins_month == 11:
now_month = 30
elif ins_month == 2:
if (ins_year % 4 == 0 and ins_year % 100 != 0) or ins_year % 400 == 0:
now_month = 29
else:
now_month = 28
if ins_year == year and ins_month == month:
break
ins_now_month += now_month
ins_month += 1
if ins_month > 12:
ins_month = 1
ins_year += 1
wodIndex = (1 + ins_now_month) % 7
return wodIndex, now_month
근데 교수님께서 인터넷에 있는거 배끼면 0점 준다고 했었음 ㅋㅋㅋ
정말 어이없는 곳에서 오류나가지고...
아직 멀었네요.
2020년 달력도 만들 수 있습니다.
시간이 된다면
공휴일은 전부 빨간색으로 출력하도록 해보려고 합니다.
아마 오랫동안 시간이 안될듯 ㅋㅋㅋㅋㅋㅋㅋㅋ
728x90
반응형
'프로그래밍 > Python' 카테고리의 다른 글
파이썬 학습 노트 기초 (1) (1) | 2023.03.04 |
---|---|
네이버 금융 주식 데이터 웹 크롤링 - 일별시세 csv파일에 저장하기 (4) | 2022.09.21 |
[파이썬] 숫자 맞추기 게임 from random import randint (0) | 2019.10.23 |
[파이썬] 숫자를 입력하고 각 자릿수 숫자를 더하는 프로그램 (0) | 2019.10.23 |
[파이썬] 년, 월, 일 받아서 요일 출력하기 datetime.date (0) | 2019.10.23 |