파이썬 날짜를 입력하면 요일을 알려주는 코드

조회수 7761회

연 월 일 을 기입하면 요일을 알려주는 코드를 짜는중입니다.
일단은

import datetime 
def print_whichday(year,month,date)
r=['월요일','화요일','수요일','목요일','금요일','토요일','일요일']
    aday=datetime.date(year,month,date)
    bday=datetime.weekday()
print(r[bady])

이렇게 짜봤습니다 weekday0~6의 숫자로 나오기때문에 리스트로 미리 값을 설정해둔다면 바로바로 숫자가 인덱싱해서 원하는 요일값을 출력해줄거라고 생각해서 만들어봤는데 혹시 수정사항이거나 제가 만든코드가 그냥 상상에불과한것인지 ㅠㅠ 한번만 봐주실수 있을까요?
처음에는 if else 구문을 사용했는데 너무 코드가 길어져서 뵈기싫어서 해봤습니다!

2 답변

  • 한발 더 나아가서 지금은 국제화 시대인지라 유니코드 및 locale 에 맞춰서 개발해야 합니다.

    파이썬은 locale 설정을 통해 가능합니다.

    In [5]: d = datetime.date(2019, 5, 21) 
    
    In [6]: d.strftime('%A')                                                        
    Out[6]: 'Tuesday'
    
    In [7]: import locale                                                           
    
    In [8]: locale.setlocale(locale.LC_ALL, 'ko_KR.UTF-8')                    
    Out[8]: 'ko_KR.UTF-8'
    
    In [9]: d.strftime('%A')                                                       
    Out[9]: '화요일'
    
  • 누군가에게 코드 리뷰는 처음 해 드리는 것 같은데 부족하나마 한 말씀 올립니다.

    일단 기본 아이디어는 매우 훌륭하다고 생각됩니다. 사실 적지 않은 언어가 날짜/시간 관련 번역/로컬라이징을 매우 부실하게 제공하고 있어서, 많은 라이브러리가 질문자님의 아이디어를 가지고 요일 표기를 번역해 주고 있습니다.

    저의 리뷰 결과는 다음과 같습니다.

    import datetime
    
    def print_whichday(year, month, day) :
        r = ['월요일', '화요일', '수요일', '목요일', '금요일', '토요일', '일요일']
        aday = datetime.date(year, month, day)
        bday = aday.weekday()
        return r[bday]
    
    print(print_whichday(2019, 5, 20))
    

    라인별로 설명하자면... (내용 + 5점만점의 중요도)

    • 2번, 8번줄: import 등으로 소스를 초기화하는 부분, 메소드가 나열되는 부분, 비즈니스 로직 부분을 각각 구분하였습니다. (1/5)
    • 3번줄: def로 함수를 정의할 때는 끝에 :이 있어야 합니다. (5/5)
    • 3번줄: "년, 월, 일" 할 때의 '일'은 영어로 day입니다. (0/5)
    • 4번줄: ,로 구분된 문자열들 사이를 적당히 띄어 주었습니다. (1/5)
    • 6번줄: adaydatetime.date이므로 여기에 .weekday()를 걸어야 합니다. 원래 소스인 bday=datetime.weekday() 구문은 다음과 같은 에러를 떨어뜨립니다. AttributeError: 'module' object has no attribute 'weekday' (4/5)
    • 7번줄: 원래 소스에서는 bady라고 오타를 내셨습니다. (2/5)
    • 7번줄: 별다른 이유가 없는 한 메소드는 실제 출력을 하기보다는 출력될 대상을 그냥 리턴만 하는 것이 좋습니다. print()는 아무데서나 찍을 수 있지만, 꼭 써야 하는 메소드가 있는데 그 메소드가 강제로 print()만 찍고 끝내는 메소드라면 그럴 때는 곤란해지는 경우가 있습니다. (3/5)

    이상 주제넘은 참견이었습니다. 즐거운 코딩 되세요.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)