[엘리스 AI 7기 프리트랙] 06. 함수와 메서드

bee·2023년 1월 31일
0
post-thumbnail

해당 시리즈의 모든 내용은 국비지원 부트캠프 '엘리스 AI 7기' 이호준 선생님의 AI 프리트랙 강의를 수강하며 수업 내용을 정리한 것 입니다.

프로그래밍의 기본 틀

컴퓨터에게 정보를 입력하면 컴퓨터가 작업을 하고, 컴퓨터가 그 작업결과를 출력한다.

1. 함수

함수란?

특정 기능을 수행하는 코드(들의 모임)

함수의 구조

자료를 넣으면 특정 행동을 한 후 결과를 알려준다.


2. 함수의 종류

1) 내장함수

파이썬 개발자들이 이미 만들어 둔 함수를 편리하게 가져다 쓰면 된다.

  • input() : 자료를 입력하는 함수
  • print() : 자료를 출력하는 함수
>>.a = input()
Hello
>>>print(a)
'Hello'
  • max() : 시퀀스 자료의 최댓값을 구하는 함수
  • min() : 시퀀스 자료의 최솟값을 구하는 함수
>>> print(max(1, 2, 3, 4, 5))
5
>>> print(min([1, 2, 3, 4, 5]))
1
  • sum() : 숫자 원소로 이루어진 시퀀스 자료의 합
  • len() : 시퀀스 자료의 길이를 구하는 함수
>>> print(sum((1, 2, 3, 4, 5)))
15
>>> print(len("Triangle"))
8

2) 사용자 지정 함수

사용자가 여러 코드를 묶어서 새로 만든 함수

>>> def plusDouble(a, b):
		c = a + b
        return 2 * c
>>> print(plus(3, 4))
14
  • 함수 만들기 : def 키워드를 이용해서 함수를 정의한다.
  • 함수의 입력 : 매개변수 를 이용해서 함수 내부로 값을 전달한다.
  • 함수 속 명령 작성 : 같은 들여쓰기를 통해서 명령을 작성한다
  • 함수의 반환(출력) : return을 이용해서 함수 외부로 값을 전달한다.
    Q. 왜 반환이 필요할까?
    A. 함수 내부에서 일어난 일은 함수 외부에서 알 수 없기 때문에 반환을 통해 외부로 전달한다.
# 사용자 지정함수 기본 구조
def 함수이름(매개변수):
	<수행할 명령>
    <수행할 명령>
    .
    .
    return 반환값

# 함수 호출
함수이름(매개변수)
# 예제
>>> def plus(a, b):
		c = a + b
        return c
>>> print(plus(3, 4))
7

print()return의 차이점
함수 안에 print()가 있다면 함수 호출 시 print()를 써줄 필요가 없지만, return만 있는 경우에는 반드시 print()를 써줘야 호출과 동시에 출력이 된다.
print()는 우리가 눈에 볼 수 있도록 출력하는 함수이고, return()은 함수 안에서 일어난 일을 외부로 꺼내오는 기능만 하는 것을 명심하자.

[실습] 내장합수 사용 : 최댓값/최솟값

>>> my_tuple = (1, 20, 30, 40, 100)
>>> var1 = max(my_tuple)
>>> var2 = min(my_tuple)
>>> print(var1, var2)
100 1

[실습] 내장함수 사용 : 합/길이

>>> my_list = [10, 20, 30, 40, 50]
>>> var1 = sum(my_list)
>>> var2 = len(my_list)
>>> var3 = var1/var2
>>> print(var1, var2, var3)
150 5 30.0

[실습] Return

>>> def plus_print(a, b):
		print(a+b)
>>> def times_return(a, b):
		return a*b
>>> plus_print(3, 4)
>>> print(times_return(3,4))
7
12

3. 전역변수와 지역변수

함수 안에서 일어난 일은 함수 밖에 영향을 끼치지 않는다.

>>> def my_func(a):
		x = "Hi!"
        print(a)
>>> a = 3
>>> my_func(a)
3

>>> print(x)
Error

전역변수

함수 밖에서 정의되어 어디서든지(함수 안, 함수 밖 모두) 사용할 수 있는 변수

>>> x = "Hi!" # 전역변수 x
>>> def my_func():
		print(x)
>>> my_func()
Hi!
>>> print(x)
Hi!

지역변수

특정 구문(for문, 함수 ...) 안에서 정의한 변수로, 변수를 정읳나 범위 내에서만 사용 가능한 변수

>>> def my_func():
		x = "Hi?" # 지역변수 x
        print(x)
>>> my_func()
Hi?
>>> print(x)
Error

[실습] 사투리 전문가

>>> greeting = "밥 먹었어요?" # 전역변수 greeting
>>> print("서울 :", greeting)
서울 : 밥 먹었어요?

>>> def busan():
		greeting = "밥 뭇나?" # 지역변수 greeting
        print("부산 :", greeting)
>>> busan()
부산 : 밥 뭇나?

>>> print(greeting)
밥 먹었어요?

4. 메서드 (method)

메서드란?

특정 자료에 대해 특정 기능을 하는 코드(함수)

>>> my_list = [1, 2, 3]
>>> my_list.append(4)
>>> my_list.count(2)
>>> my_list.pop()

함수 vs 메서드

  • 함수는 특정 기능을 한다. (매개변수를 이용해서 자료를 전달해준다.)
>>> my_list = [1, 2, 3]
>>> len(my_list)
3
>>> sum(my_list)
6
>>> min(my_list)
1
  • 메서드는 특정 자료와 연관지어 기능을 한다. (자료 뒤에 .을 찍어 사용한다.)
>>> my_list = [1, 2, 3]
>>> my_list.sort()
>>> my_list.pop()
>>> my_list.clear()

[실습] 메서드

>>> my_dict = {1:"one", 2:"two", 3:"three"}
>>> var1 = my_dict.keys() # 딕셔너리의 '모든 키'를 반환
>>> var2 = my_dict.values() # 딕셔너리의 '모든 값'을 반환
>>> print(var1, var2)
dict_keys([1, 2, 3]) dict_values(['one', 'two', 'three'])

[실습] 인자와 매개변수

>>> def solve(a, b):
		return a*b
>>> var1 = solve(3, 4)
>>> var2 = solve(3, ['Cham'])
>>> print(var1, var2)
12 ['Cham', 'Cham', 'Cham']

[실습] 최댓값 직접 구하기

# 모범답안
>>> def our_max(nums):
		maxNum = -999999999
		for i in nums:
        	if i > maxNum:
            	maxNum = i
		return maxNum
        
>>> print(our_max([1, 2, 10, 9, 3, 7, 0, 99, 27, 85]))
99
# 내 풀이
>>> def our_max(nums):
    	nums.sort()
    	a = nums.pop()
    	return a

>>>print(our_max([1, 2, 10, 9, 3, 7, 0, 99, 27, 85]))
99

[실습] 환상의 나라로!

각 놀이기구의 대기시간이 담긴 리스트가 인자로 주어졌을 때, 유진이가 놀이기구를 타는 순서로 대기시간을 정렬한 함수 neverland()를 만들어보자. 단, 인덱스 2에 해당하는 놀이기구는 유진이가 꼭 타고 싶어하는 놀이기구로, 대기시간에 상관없이 가장 먼저 타야한다. 주어진 조건에 맞게 정렬된 리스트를 반환해보자.

>>> def neverland(queue):
		must = [] # 2번쨰 인자를 담을 빈 리스트 선언
        must.append(queue[2]) # 2번째 인자 추가
        
        queue.pop(2) # 2번째 인자를 따로 빼놓는다
        queue.sort() # 2번째 인자가 제거된 나머지 원소 오름차순 정렬
        queue = must + queue # 2번째 인자 + 정렬된 원소 합치기
        
        return queue
        
>>> queue = [30, 10, 20, 50, 40, 60]
>>> print(neverland(queue))
[20, 10, 30, 40, 50, 60,]

[실습] 비밀번호 486

주어진 조건에 맞는 비밀번호를 만들어주는 함수 yoonHa()를 만들어보자.

  • 인자 : 숫자 nums
  • 매개변수 : 숫자 nums
  • 반환값 : 문자열로 변환시킨 숫자 비밀번호
    암호를 만드는 규칙은 다음과 같다.
  • 4 => love
  • 8 => smile
  • 6 => kiss
def yoonHa(nums):
    secret = {'4':'love', '8':'smile', '6':'kiss'}
    answer = ''
    for i in nums:
        answer = answer + secret[i]
    return answer

nums = input()
print(yoonHa(nums))
profile
벌집처럼 밀도있게 차곡차곡 쌓아나가는중

0개의 댓글