파이썬 함수 리스트 리턴 - paisseon hamsu liseuteu liteon

everdevel이 만든 무료 클라우드 개발환경을 소개합니다.

방문해 주셔서 감사합니다.

함수 값 반환 return

안녕하세요.

이번시간에는 파이썬의 함수가 값을 반환하는 방법에 대해 알아보겠습니다.

함수 내에서 return문을 사용하여 값을 반환 받을 수 있습니다.

파이썬 함수내에서 값 반환하기

def 함수명():
    기능
    return 반환할 값

문자열 "안녕하세요."를 반환한다면 다음과 같이 작성합니다.

return "안녕하세요."

그럼 "안녕하세요."를 반환하는 함수를 만들고 그 값을 출력해 봅시다.

# -*- coding: utf-8 -*-
def say_hello():
    return "안녕하세요."

print(say_hello())

파이썬 함수 리스트 리턴 - paisseon hamsu liseuteu liteon

파이썬 함수 리스트 리턴 - paisseon hamsu liseuteu liteon

결과는 바로 아래에서 확인하겠습니다.

파이썬 함수 리스트 리턴 - paisseon hamsu liseuteu liteon

print 출력문에서 say_hello()함수를 호출합니다.

say_hello()함수내에는 출력문이 없지만 "안녕하세요."를 반환해서 print문에 의해 출력됩니다.

Return문에는 문자열 뿐 아니라 숫자도 반환가능하며 불린도 반환할 수 있습니다.

물론, 튜플, 리스트, 사전도 다 가능하죠.

def say_hello():
    return True

print(say_hello())

파이썬 함수 리스트 리턴 - paisseon hamsu liseuteu liteon

파이썬 함수 리스트 리턴 - paisseon hamsu liseuteu liteon

결과는 바로 아래에서 확인하겠습니다.

파이썬 함수 리스트 리턴 - paisseon hamsu liseuteu liteon

이 return문은 함수의 종료를 의미합니다. 그러므로 return문 다음에 있는 코드는 실행되지 않습니다.

그럼 다음의 코드에서 return문 다음에 print문을 넣어서 작동을 하는지 안하는지 확인해 보겠습니다.

def say_hello():
    return True
    print("Hello")

print(say_hello())

파이썬 함수 리스트 리턴 - paisseon hamsu liseuteu liteon

파이썬 함수 리스트 리턴 - paisseon hamsu liseuteu liteon

결과는 바로 아래에서 확인하겠습니다.

파이썬 함수 리스트 리턴 - paisseon hamsu liseuteu liteon

결과를 보면 print("Hello")는 작동하지 않았음을 알 수 있습니다. return문을 만나면 함수는 끝나기 때문입니다.

함수를 이런 식으로만 쓰면 참 쓸모없죠? 다음시간에는 함수에 값을 보내고 그 값을 받아서 기능을 수행하는 방법에 대해 알아볼게요.

봐주셔서 감사합니다. 문의 또는 잘못된 설명은 아래의 댓글에 부탁드립니다.
당신의 작은 누름이 저에게는 큰 희망이 됩니다.

컨텐츠의 내용을 더 보려면 바로 아래에서 확인할 수 있습니다.

컨텐츠
더보기

>>함수로부터 목록 반환하기

예제 함수 내에서 사용자로부터 이름과 나이를 입력 받아 main에 전달해, main에서 입력 받은 값 출력하게 만들기
결과물
파이썬 함수 리스트 리턴 - paisseon hamsu liseuteu liteon
코딩 def per_info():
    print('이름과 나이를 입력하세요')
    name = input('name:')
    age=int(input('age:'))
    return [name, age]    <<반환을 리스트 형태로 할 수 있음 

print(per_info())

 : 리스트 안의 원소가 리스트인 2차원 목록(리스트)도 만들 수 있다. EX - [[1,3,5,7],[2,4,6,8]]

>>목록 반환 응용1

예제

점수 = [90, 95, 80, 55] 인 리스트에서 / 60점 이상이면 pass 그렇지 않으면 fail을 출력하는 findGrades 함수를 작성하시오.

결과물

파이썬 함수 리스트 리턴 - paisseon hamsu liseuteu liteon
코딩

def findGrades(scores):

      save_grades = []

      for n in scores:

         if n>=60:

           save_grades.append('pass')

         else:

           save_grades.append('fail')

      return save_grades

scores = [90, 95, 80, 55]

print('점수=',scores)

grades = findGrades(scores)

print('학점=', grades)

 : 이 부분이 생각보다 어려웠다. 사용자 지정함수에, for 구문에, 목록 반환에, 반환값까지.... ㅠㅠ 결국 마지막에 리스트로 반환하기 위해서 임시로 'save_grades 리스트'를 만들고, 거기에 pass/fail 값을 저장한 후 마지막에 save_grades 리스트 자체를 반환(return)하면 된다. 

>>목록 반환 응용2

예제

KIM = [520, 590] / PARK = [500, 580, 520] / LEE = [510, 500] / students = [KIM, PARK, LEE]

세 명의 TOEFL 점수 중에서 최고 평균점을 구하기

결과물

파이썬 함수 리스트 리턴 - paisseon hamsu liseuteu liteon


KIM = [520, 590]
PARK = [500, 580, 520]
LEE = [510, 500]
students = [KIM, PARK, LEE]   <<<students는 2차원 목록

def findBest(stds):
    highavg = 0
    ssum = 0
    for std in stds:
        for score in std:
            ssum+=score
        avg=ssum/len(std)
        print(avg)
        ssum=0
        if avg > highavg:
            highavg = avg
    return highavg

print('최고 평균점은', findBest(students))

 : 비루한 내 실력으론 풀기 매우 어려운 문제였다 ㅠㅠ 일단 students가 리스트에 리스트로 이루어진 2차원 목록(리스트)이기 때문에 리스트를 두번 거쳐있는 점수값(score)을 다루기 위해선, for 구문을 두번 연속으로 써야한다는 점이 중요한 것 같다. 이 부분만 인지해도 나머지 부분은 어찌저찌 짤 수 있을 것 같다.

 : score에 합인 ssum을 for구문이 한번 끝나는 부분에서 0값으로 초기화하는 것을 잊어버린다면, 다음 리스트로 넘어가서도 이전 리스트의 값이 남아 누가되기 때문에 원하는 결과를 얻을 수 없다.