python3을 배우는 동시에 달력 성형 문제를 해결해 봤습니다.

12643 단어 Python3

전제 조건


공부하고 있어요4
  • 공개글도 연습 중이다

  • 컨디션
  • windows10 WSL ubuntu
  • python3.6
  • 질문


    회사 동료가 나에게 알려준 문제.
    인터넷에서 찾아봤는데나온다.

    문제.


    달력을 다음 형식으로 표시하십시오
    April 2013
    Su Mo Tu We Th Fr Sa
    1 2 3 4 5 6
    7 8 9 10 11 12 13
    14 15 16 17 18 19 20
    21 22 23 24 25 26 27
    28 29 30
    루비 연습문제인 것 같은데.
    그런데 루비가 공부를 안 해서 마침 python을 독학하기 시작해서 해 봤어요.

    나의 답안


    처음에는 제가 배열 같은 걸 준비하고 싶었어요.
    배열대로 처리하려면 1주일 주수 증감, 더 스마트하게 생각해야 한다.
    결과적으로 첫날 요일과 월의 일수를 알고 나면 그 후 시작 위치를 정해 7개 단위로 줄을 바꾸면 된다
    눈치챘으니까 이렇게 된 거야.
    todayCalendar.py
    import calendar
    import datetime
    
    
    gyo = ''
    span, last_day = calendar.monthrange(datetime.date.today().year, datetime.date.today().month)
    
    print('{:^20}'.format(calendar.month_name[datetime.date.today().month] + '.' + f'{datetime.date.today().year}'))
    print('')
    print('Su Mo Tu We Th Fi St')
    print('')
    
    
    for i in range(span + 1):
        gyo = gyo + '   '
    
    for day in range(1, last_day + 1):
        gyo = gyo + '{:>3}'.format(day)
        if (day + span + 1) % 7 == 0:
            print(gyo[1:])
            print('')
            gyo = ''
    
    print(gyo[1:])
    
    
    신문 헤드 부분에 논리화가 없다.

    2019.09.24 추기


    평론에서 많은 교수를 얻었다.
    Shiracamus씨와 Konandoiiruasa씨 감사합니다.

    삼행해결!


    세 줄만 써도 달력이 예쁘게 나와요.
    import calendar
    calendar.setfirstweekday(6)
    print(calendar.month(2019, 9, l=2))
    

    더 좋은 대답이라고 생각해요.


    역시 3행답!비록 이렇게 말하지만, 나는 알고리즘 문제의 대답으로는 적합하지 않다고 생각한다
    댓글에서 얻은 내용을 흡수하면서 다시 도전한다.
    todayCalendar.py
    import calendar
    import datetime
    
    
    gyo = ''
    today = datetime.date.today()
    span, last_day = calendar.monthrange(today.year, today.month)
    
    print(f'{today:%B.%Y}'.center(20))
    print('')
    print('Su Mo Tu We Th Fi St')
    print('')
    
    
    for i in range((span + 1) % 7):
        gyo += '   '
    
    for day in range(1, last_day + 1):
        gyo += f'{day:>3}'
        if (day + span + 1) % 7 == 0:
            print(gyo[1:])
            print('')
            gyo = ''
    
    print(gyo[1:])
    
    paiza를 통해 확인합니다.
    여기.
    일요일부터 잘 대처할 수 있겠네요.

    shiracamus의 대답


    shiracamus
    import calendar
    import datetime
    
    
    today = datetime.date.today()
    span, last_day = calendar.monthrange(today.year, today.month)
    span = (span + 1) % 7  # set the first week a day Sunday
    
    print(f'{today:%B.%Y}'.center(20))
    print()
    print('Su Mo Tu We Th Fi St')
    print()
    line = '   ' * span
    for column, day in enumerate(range(1, last_day + 1), span):
        line += f'{day:>2} '
        if column % 7 == 6:
            print(line)
            print()
            line = ''
    
    line and print(line)
    
    전반적으로 파이톤이 자유자재로 구사되는 느낌이에요!
    알려주셔서 감사합니다.

    좋은 웹페이지 즐겨찾기