카테고리 없음

중급 파이썬 Part 1 - 함수

닥터 마틸다 2023. 3. 15. 00:47

 

#01강. 함수란?

■파이썬에서 함수 정의하기 

def addFun(x,y):
    return x+y

print(addFun(100,500))

■함수는 파이썬에서 기본으로 제공하는 내장함수와 사용자가 직접 선언하는 사용자 함수가 있다.

내장 함수 사용자 함수
print('hello python!')

str = input()  # 어떠한 데이터를 입력받기 위해 존재

numbers = [1,2,3,4,5]   # 리스트
numbers.sort()              # 데이터 정렬
numbers.reverse()        # 반대로 정렬
numbers.clear              # 모든 아이템 삭제

사용자 스스로 특정기능의 함수를 만드는것.

def printUserName(name):     # 함수선언, 매개변수는 name
    print(f'{name}고객님, 안녕하세요.')

def addCal(n1,n2):
    result = n1 + n2

■ 함수는 특정 기능을 재사용하기 위해서 사용한다.

추후에 반복해서 사용하기 위해 기능을 함수로 정의하고 필요할 때마다 씀

<예시>

def addCal():
    n1 = int(input('n1 입력 : '))
    n2 = int(input('n2 입력 : '))
    print(f'n1+n2 = {n1+n2}')

addCal()

 

#02강. 함수 선언과 호출 

함수는 def키워드, 함수명, : , 들여쓰기를 이용해서 선언한다.

정수 두 개를 입력하면 곱셈과 나눗셈 연산 결과를 출력하는 함수를 만들고 호출해보자.

def calFuc():
    n1 = int(input('n1 입력: '))
    n2 = int(input('n2 입력: '))
    
    print(f'n1 * n2 = {n1 * n2}')
    print(f'n1 / n2 = {round(n2 / n2)}')
    
calFuc()

 

#03강. 함수 내에서 또 다른 함수 호출 

함수 내에서 또 다른 함수를 호출할 수 있다.

fun1()은 fun2()를 호출하고 fun2()는 fun3()을 호출한다.

def fun1():
    print('fun1 호출!')
    fun2()
    print('fun2 호출 후에 실행!!')   
    
def fun2():
    print('fun2 호출!')
    fun3()

def fun3():
    print('fun3 호출!')
    
fun1()

 

▶ pass 를 이용해서 실행문을 생략할 수 있다. # 함수 선언 후 비워 두면 에러가 남.

def printTodayWeather():
    pass
printTodayWeather()

다음과 같이 구구단 출력함수가 연쇄적으로 호출되도록 함수를 선언해보자.

def guguDan2():   # 2단
    for i in range(1,10):
        print('2 * {} = {}'.format(i, 2*i))
        
def guguDan3():   # 3단
    for i in range(1,10):
        print('3 * {} = {}'.format(i, 3*i))
guguDan2()
guguDan3()

 

#04강. 인수와 매개변수. 함수 호출 시 데이터를 넘겨주자!

def --> 함수 선언부

greet() --> 함수 호출부    /  호출부와 선언부의 관계를 맺어주는 것이 매개변수이다.

def greet(customer):
    print('{}님, 안녕하세요'. format(customer))
    
greet('홍길동')

def greet2(customer1, customer2):
    print('{},{}님 안녕하세요'.format(customer1, customer2))
    
greet2('홍길동', '박찬호')

매개변수의 개수에 맞게 인수를 입력해 주어야 합니다.

 

매개변수 개수가 정해지지 않은 경우 '*'를 이용한다.

def printNumber(*numbers):   #데이터가 몇개인지 모르기 때문에 tuple형태이다.
    for number in numbers:
        print(number , end = "")
    print()

printNumber()
printNumber(10)
printNumber(10,20)
printNumber(10,20,30)

Q) 국어, 영어, 수학 점수를 입력받고, 입력받은 점수를 이용해서 총점과 평균을 출력하는 함수를 만들어보자.

1. 함수를 선언한다.

 

2. 총점과 평균에 대한 변수를 선언하고 출력 형식을 써준다

 

3. 입력받을 데이터 변수명을 선언해준다.

 

def score(kor,eng,mat):
    sum = kor+eng+mat
    avg = sum/3
    print(f'총점: {sum}')
    print(f'평균: {round(avg,2)}')
    
kor = int(input('국어 점수 입력: '))
eng = int(input('영어 점수 입력: '))
mat = int(input('수학 점수 입력: '))
score(kor,eng,mat)  # def의 출력결과를 가져온다

 

 

 

 

 

 

#05강. 데이터 반환. 함수 실행결과를 돌려주자

return 키워드를 이용하면 함수 실행 결과를 호출부로 반환할 수 있다.

함수가 return을 만나면 실행을 종료한다.

Q) 사용자가 길이(cm)를 입력하면 mm로 환산한 값을 반환하는 함수를 만들어보자.

1. cm를 mm로 환산하는 함수 선언하기.

2. 길이 입력 받기

3. returnValue 출력

 

def cm_mm(cm):
    result = cm * 10
    return result

length = float(input('길이(cm)입력: '))
returnValue = cm_mm(length)
print('returnValue : {}mm'.format(returnValue))

Q) 1부터 100까지의 정수 중에서 홀수인 난수를 반환하는 함수를 선언하자.

 

1. random 모듈을 import한다

2. 함수를 선언한다. 난수를 변수로 할당받은 후 조건문을 이용한다. --> return 난수

3. returnValue를 출력한다

def cm_mm(cm):
    result = cm * 10
    return result

length = float(input('길이(cm)입력: '))
returnValue = cm_mm(length)
print('returnValue : {}mm'.format(returnValue))

 

#06강. 지역변수와 전역변수. 함수 내에서만 사용할 수 있는 변수가 있다

* 전역변수 : 함수 밖에 선언된 변수로 어디에서나 사용은 가능하지만 함수 안에서 수정저장되지 않는다.

* 지역변수 : 함수 안에 선언된 변수로 함수 안에서만 사용 가능하다.

* global 키워드 : global을 사용하면 함수 안에서도 전역변수의 값을 수정할 수 있다.

 

 

global 은 전역변수의 값을 수정한다

 

 

 

 

 

 

 

 

 

 

 

 

Q) 사용자가 가로, 세로를 입력하면 삼각형과 사각형의 넓이를 출력하는 항수를 만들어보자.

1. 함수 선언

2. 입력 변수 선언

3. 함수 호출 

 

def area():
    triangle = width * height / 2
    square = width * height
    
    print(f'삼각형의 넓이 : {triangle}')
    print(f'사각형의 넓이 : {square}')
    
width = int(input('가로 길이 입력: '))
height = int(input('세로 길이 입력: '))
area()

Q) 방문객 수를 카운트하는 함수를 만들어보

전역변수 선언

방문객 증가할 때마다 1씩 증가하는 함수 선언 --> 함수 내부에서 변수 수정 

 

 

 

totalVisit = 0 
def count_Visitors():
    global totalVisit
    totalVisit += 1
    print(f'누적 방문객: {totalVisit}')

count_Visitors()
count_Visitors()
count_Visitors()
count_Visitors()
count_Visitors()

 

#07강. 중첩함수

함수안에 또 다른 함수가 있는 형태이다.

Q) calculator()함수를 선언하고 calculator() 안에 덧셈, 뺄셈, 곱셈, 나눗셈 함수를 선언하자.

def calculator(n1, n2, operator):
    def addCal():
        print(f'덧셈 연산: {n1 + n2}')
    
    def subCal():
        print(f'뺄셈 연산: {n1 - n2}')
    
    def mulCal():
        print(f'곱셈 연산: {n1 * n2}')
    
    def divCal():
        print(f'나눗셈 연산: {n1 / n2}')
        
    if operator == 1:
        addCal()
    elif operator == 2:
        subCal()
    elif operator == 3:
        mulCal()
    elif operator ==4:
        divCal()
        
while True:
    num1 = float(input('실수(n1) 입력: '))
    num2 = float(input('실수(n2) 입력: '))
    operatorNum = input('1. 덧셈,  2. 뺄셈,  3. 곱셈,  4. 나눗셈,  5.종료')
    
    if operatorNum == 5:
        print('Bye~~')
        break
        
    calculator(num1, num2, operatorNum)

 

#08강. lambda 함수. 함수 선언을 보다 간단하게 하자!!

Q) 삼각형, 사각형, 원의 넓이를 반환하는 lambda함수를 만들어보자.

1. lambda 함수 정의 --> 변수 지정

 

2. 가로, 세로, 반지름 길이 입력

 

3. print 넓이 하기 위해 변수 지정 

 

4. print

getTriangleArea = lambda n1, n2 : n1 * n2 / 2
getSquareArea = lambda n1, n2 : n1 * n2
getCircleArea = lambda r : radius * radius * 3.14

width = int(input('가로 길이 입력: '))
height = int(input('세로 길이 입력: '))
radius = int(input('반지름 길이 입력: '))

triangleValue = getTriangleArea(width, height)   # 삼각형의 넓이 = 삼각형함수(n1, n2)
squareValue = getSquareArea(width,height)        # 사각형의 넓이 = 사각형함수(n1, n2)
radiusValue = getCircleArea(radius)              #     원의 넓이 = 원넓이함수(radius)

print(f'삼각형 넓이: {triangleValue}')
print(f'사각형 넓이: {squareValue}')
print(f'원 넓이: {radiusValue}')

 

※ 이 게시물은 제로베이스 취업 스쿨 강의를 참고하여 작성된 스터디 노트입니다.