파이썬

조회수 2277회

def f(a,b,c):
    if a>b and a>c:
        max=a
    elif b>a and b>c:
        max=b
    else:
        max=c


    if a<b and a<c:
        min=a
    elif b<a and b<c:
        min=b
    else:
        min=c
    return max, min

print(f(5,3,4))

어떤 정수를 넣어도 세수를 넣어도 가장 큰 수와 가장 작은 수를 구할 수 있는 함수를 만들어야 하는데 위처럼 하면 되는건가요?

print(f(5,3,4))를 했을때 (5,3) 이런식으로 괄호가 나오는데 왜 괄호가 생기는거죠? 안나오게끔 하는 방법없을까요?

2 답변

  • 좋아요

    1

    싫어요
    채택 취소하기

    네. 작성하신대로 하시면 됩니다. 논리적으로 아무런 문제도 없죠? 그러면 정상적으로 작동합니다. 그런데 몇군데 군더더기가 있는 것 같아요.

    def f(a,b,c):
        if a>b and a>c:
            max=a
        #elif b>a and b>c:
        elif b>c:
            max=b
        #a값이 가장 큰것이 아니라는걸 알았으므로, b와 c만 비교하면 됩니다.
        else:
            max=c
        #
        #윗줄 까지가 max 값을 구하는 거였습니다.
        #
        if a<b and a<c:
            min=a
        #elif b<a and b<c:
        elif b<c:
            min=b
            #이것도 마찬가지입니다. a가 최소값이 아니라는 걸 알았으니 b와 c만 비교하면 됩니다.
        else:
            min=c
        return max, min
    
    print(f(5,3,4))
    

    C언어를 보면은 return 값으로 오직 하나의 객체만 반환할 수 있습니다. C언어에서 return 0,1; 이라고 쓰면 100% 컴파일 오류가 날거에요. 그건 Python도 별반 다를것이 없지만. 우리의 똑똑한 Python이 자동으로 눈치를 채줘서, 두개를 하나로 묶어서 반환해주기 때문이에요 . return 값으로 오직 하나의 객체만을 반환할 수 있어요. Python이 여러개를 반환할려고 하면은 튜플로 묶어서 하나인 것 처럼 반환하는거에요 ^ 0 ^

  • 알고리듬 연습하는 것이 아니라면... max, min 펑션을 사용하면 됩니다.

    def f(a, b, c):
        return max([a, b, c]), min([a, b, c])
    

    리턴의 경우 2개 이상이면 tuple 로 받기 때문에 ()가 나오는 겁니다.

    val1, val2 = f(5, 3, 4)
    

    와 같이 변수를 갯수를 맞춰서 받으면 튜플로 리턴되지 않습니다.

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

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

(ಠ_ಠ)
(ಠ‿ಠ)