파이썬
조회수 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 답변
-
네. 작성하신대로 하시면 됩니다. 논리적으로 아무런 문제도 없죠? 그러면 정상적으로 작동합니다. 그런데 몇군데 군더더기가 있는 것 같아요.
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)
와 같이 변수를 갯수를 맞춰서 받으면 튜플로 리턴되지 않습니다.
댓글 입력