ABC 부트캠프 데이터 탐험가 4기

[5일차] ABC 부트캠프 : Jupyter Notebook 활용 및 Python 기초 (3)

marriina 2024. 7. 11. 23:03

1. 함수(Function)와 메서드(method)

  • 함수: 반복된 기능을 함수로 구현하여 반복된 코드를 줄일 수 있다.
# 함수의 정의
def add(a, b): 
    return a + b

# 함수의 호출
add(4, 10)

결과: 14

 

  • 함수의 반환값(return): return 예약어를 이용하여 결괏값 반환, 반환과 동시에 함수 종료(return이 없을 때는 함수의 기능을 전부 사용했을 때도 종료함)
def test(a,b):
    for x in (range(a, b+1)):
        if x>= 10:
            return
            #여기서 return은 break 과 같은 효과
        print(x)
test(1,19)

결과: 1 2 3 4 5 6 7 8 9

 

  • 함수의 매개변수
def sub(a, b):
    return a - b
# 위치에 의한 매개변수 전달
print("sub: ",sub(10, 7))
결과: sub:  3

# 이름에 의한 매개변수 전달
print("sub: " ,sub(b=7, a=10))
결과: sub:  3

# 입력값의 개수가 미정일 경우
def sum(*nums):
    result = 0
    for x in nums:
        result += x
    return result

print("sum: ", sum(1, 2, 3))
결과 : sum: 6

# 키워드 매개변수
def print_kwargs(**kwargs):
    print(kwargs)
print_kwargs(name='홍길동', age=30)
결과: {'name': '홍길동', 'age': 30}

 

 

  • 재귀함수 : 함수안에서 자신을 호출(재귀)하는 함수
#재귀함수 예제
#피보나치 수열은 앞의 두 수를 계속 더해 가는 수열로 수식은 f(n+2) = f(n+1) + f(n)

def fibo(n):
    if n <= 0:
        return 0
    elif n == 1:
        return 1
    else:
        return fibo(n-1) + fibo(n-2)

print(fibo(10)) 

결과 : 55

 

 

 

  • 함수 예제 
# 이 함수는 리스트를 매개변수로 받아 리스트의 최대값을 반환합니다.
# find_max 함수를 호출하여 [1, 3, 2, 8, 5, 10]과 [-10, -20, -30, -5]의 최대값을 출력하세요.

def find_max(list):
    max_value = list[0]
    
    for num in list:
        if num > max_value:
            max_value = num
    
    return max_value
    # return max(list)

print(find_max([1, 3, 2, 8, 5, 10])) 
print(find_max([-10, -20, -30, -5]))  

결과 : 10 -5

 

2. Python 내장함수 : Python 자체에 내장된 기본 함수기능

  • abs(x): 어떤 숫자를 입력받았을 때 그 숫자의 절댓값을 리턴
  • all(x): 반복 가능한 데이터 x를 입력값으로 받으며 이 x의 요소가 모두 참이면 True, 거짓이 하나라도 있으면 False를 리턴(반복 가능한 데이터란 for 문에서 사용할 수 있는 자료형을 의미한다. 리스트, 튜플, 문자열, 딕셔너리, 집합 등이 있음. and와 비슷함)
  • any(x): 반복 가능한 데이터 x를 입력으로 받아 x의 요소 중 하나라도 참이 있으면 True를 리턴하고 x가 모두 거짓일 때만 False를 리턴(or 과 비슷함)
  • chr(i): 유니코드 숫자 값을 입력받아 그 코드에 해당하는 문자를 리턴
  • divmod(a,b): 2개의 숫자 a, b를 입력으로 받음. 그리고 a를 b로 나눈 몫과 나머지를 튜플로 리턴
  • input([prompt]): 사용자 입력을 받는 함수, 입력 인수로 문자열을 전달하면 그 문자열은 프롬프트가 됨
  • len(s): 입력값 s의 길이(요소의 전체 개수)를 리턴하는 함수
  • max(iterable): 인수로 반복 가능한 데이터를 입력받아 그 최댓값을 리턴하는 함수
  • min(iterable): 인수로 반복 가능한 데이터를 입력받아 그 최솟값을 리턴하는 함수
  • sorted(iterable): 입력 데이터를 정렬한 후 그 결과를 리스트로 리턴하는 함수
  • reversed(iterable): 입력 데이터를 반대로 정렬한 후 그 결과를 리스트로 리턴하는 함수
  • zip(*iterable): 동일한 개수로 이루어진 데이터들을 묶어서 리턴하는 함수
print("절댓값: ",abs(-10))
절댓값:  10

print("all: " , all([False, False,True]))
all:  False

print("any: " , any([False, False,True]))
any:  True

print("chr :",chr(65))
chr : A

print("divmod: ",divmod(10,3))
divmod:  (3, 1)

print("input: ", input("입력"))

print(len([1,2,3,4,5]))
len:  5

입력 작성 # "작성" 이라고 입력함
input:  작성

print("max: ", max(1,2,3,4,5,6))
max:  6

print("min: ", min(1,2,3,4,5,6))
min:  1

print("sorted: ",sorted([1,3,9,4]))
sorted:  [1, 3, 4, 9]

print("reversed: " ,list(reversed("abced")))
reversed:  ['d', 'e', 'c', 'b', 'a']

list(zip([1, 2, 3], [4, 5, 6]))
list(zip([1, 2, 3], [4, 5, 6], [7, 8, 9]))
list(zip("abc", "def"))
input_str = "1 5 10 8 20 19 100"
print("zip: ",max(list(map(int , input_str.split()))))

zip:  100