ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 30.7 심사문제 : 가장 낮은 점수, 높은 점수와 평균 점수를 구하는 함수 만들기
    코딩도장 심사문제모음 2020. 11. 3. 16:47
    728x90

    표준 입력으로 국어, 영어, 수학, 과학 점수가 입력됩니다. 다음 소스 코드를 완성하여 가장 높은 점수, 가장 낮은 점수, 평균 점수가 출력되게 만드세요. 평균 점수는 실수로 출력되어야 합니다.

    사용한 코드

    1. def

    2. return

    3. min

    4. max

    5. sum

    6. len

    첫 접근 방법

    함수를 2개를 만든다는점과 호출하는 인수의 개수가 다른걸로 보아 *args를 써야한다는 내용만 가지고 문제를 해결 하였다.

    풀이.

    1. 먼저 아래에서 함수 2개를 호출하고 있다

    min, max // average :==> 따라서 함수 2개를 만들어줘야한다.

    특히 리턴 반환값이 여러개일 경우 ,(콤마)로 구분해준다. 

    ## return min(args), max(args) == return (min(args), max(args)) 와 같다

    ## 여기서 각 점수는 args라는 튜플로 만들어지게 된다.

    korean, english, mathematics, science = map(int, input().split())
    
    def get_min_max_score (*args):
        print(args) # (89, 92, 73, 83)
        return min(args), max(args)

    2. 아래 함수를 호출할때 국어, 영어, 수학, 과학으로 한번 호출하고

    같은 함수를 영어, 과학만 호출한다.

    ### 이를 보아 함수 호출시 인수의 개수가 달라지므로 가변 인수 함수로 만들어줘야한다는점

    즉 호출시 인수의 개수가 달라지는지 여부에 따라 가변 인수 함수 적용 여부가 결정됨

    3. 파이썬 내장함수인 min, max, sum을 이용해 각 함수 결과를 반환해주면 min_score, max_scoer, average_sore로 반환 값을 할당할 수 있도록 해준다.

    4. ## 중요, 함수 호출시 인수를 키워드 인수로 넣어주고 있을 경우 **kwargs를 사용해주도록 하자.

    나의 풀이에서는 함수 호출시 사용된 인수를 직접 넣었었다. (값은 동일하나 코딩도장 정답이 아니였다.)

    ## **kwargs ==> 각 점수들은 키- 값 쌍의 딕셔너리로 저장된다.

    korean, english, mathematics, science = map(intinput().split())

    따라서 반환값 시 딕셔너리에서의 값만을 뽑아오도록 하자.

    def get_min_max_score (*args):
        return min(args), max(args)
    
    def get_average (**kwargs):
        print(kwargs) ## {'korean': 89, 'english': 92, 'mathematics': 73, 'science': 83}
        return sum(kwargs.values())/len(kwargs)  # 나누는 길이

    추가

    print 시, 각 점수 별로 소수점 표현과 format 연사자를 사용하여 출력하였음

    # 처음 작성한 답안 (결과 동일)

    korean, english, mathematics, science = map(int, input().split())
    
    def get_min_max_score (*args):
        return min(args), max(args)
    
    def get_average (korean=korean, english=english, mathematics=mathematics, science=science):
        return (korean + english + mathematics + science)/4
    
        
    min_score, max_score = get_min_max_score(korean, english, mathematics, science)
    average_score = get_average(korean=korean, english=english, mathematics=mathematics, science=science)
    print('낮은 점수 : {0:.3f}, 높은 점수 : {1:.3f}, 평균 점수 : {2:.2f}'.format(min_score, max_score, average_score))

    ※ 실제 코딩 도장의 해법과 다를  수 있으며, 답은 여러가지가 존재합니다.

    코드 지적 정말 감사히 받겠습니다.

    728x90
Designed by Tistory.