공부하는가비

22.01.015 AI기본 2주차 강의 --python 기초(함수) 본문

낰낰/인공지능

22.01.015 AI기본 2주차 강의 --python 기초(함수)

가비코코보리 2022. 1. 15. 10:48

함수(function) 선언

def 함수명(매개변수1, 매개변수2, 매개변수N) :

      실행문

      실행문

      return 반환값

 

함수명    -> 코드의 기능을 알 수 있도록 작성 

매개변수 -> 기능구현에 필요한 재료로 파라미터라 함

반환값    -> 기능 구현 후 결과문, 존재하지 않을 수도 있음

 

# -*- coding : utf-8 -*-

# 사용자 정의 함수 실습 (1) ----------------------------------------

# 기능 : 숫자를 두개 입력받아 더하기
# 이름 : twoAdd
# 재료 : 정수 2개 num1,num2
# 반환결과 : 더하기 값

def twoAdd(num1,num2):
    result = num1+num2
    return result

# 함수호출 => 함수 실행하기
value = twoAdd(1,5);
print(f'twoAdd(1,5) : {value}')

# 기능 : 2개 정수의 나머지 값을 구하기
# 이름 : getNamugi
# 재료 : 정수 2개 num1,num2
# 반환결과 : 나머지 값

def getNamugi(num1,num2):
    result = num1%num2
    return result

# 함수호출 => 함수 실행하기
value = getNamugi(5,3);
print(f'getNamugi(5,3) : {value}')

# 기능 : 점수에 대한 평균을 구하는 함수
# 이름 : getAvg
# 재료 : jumsu=[80,93,40,100]
# 반환결과 : 평균

def getAvg(jumsu):
    total=0
    for num in jumsu :
        total += num
    result = total / len(jumsu)
    return result

value = getAvg(jumsu=[80,93,40,100]);
print(f'getAvg(jumsu=[80,93,40,100]) : {value}')

# 사용자 정의 함수 실습 (2) ----------------------------------------
# 기능 : 이름과 주소를 받아 출력
# 이름 : displayUser
# 재료 : name, address
# 결과 : 안 함

def displayUser(name,address):
    print(f'{address}에 계시는 {name}님 반갑습니다! ')

# 함수실행 => 함수호출
displayUser("진아","대구")

# 사용자 정의 함수 실습 (3) ----------------------------------------
# 기능 : 이름과 주소를 입력 받아 알려주기
# 이름 : getUserInfo
# 재료 : 없음
# 결과 : 이름과 주소

def getUserInfo():
    data = input('이름과 주소를 입력해 주세요')
    return data

# 함수실행 => 함수호출
getUserInfo();

# 사용자 정의 함수 실습 (4) ----------------------------------------
# 기능 : 안내메세지 출력기능
# 이름 : autoAnswer
# 재료 : 없음
# 결과 : 없음

def autoAnswer():
    print('지금은 상담 시간이 아닙니다.')

# 함수실행 => 함수호출
autoAnswer()
# -*- coding : utf-8 -*-

# 다양한 기능의 함수들 ---------------------------------

# 기능 : 키와 몸무게에 대한 비만도 알림
# 이름 : getBMI
# 재료 : height, weight
# 결과 : 비만, 정상, 저체중
# BMI 지수 = 몸무게 / (신장 * 신장)
def getBMI(height, weight):
    height = height * 0.01
    bmi = round(weight / (height * height),1)

    if(bmi>=30):
        return '고도비만'
    elif(bmi>=25):
        return '비만'
    elif(bmi >23):
        return '과체중'
    elif(bmi>18.5):
       return '정상체중'
    else:
        return '저체중'

print(f'당신은 {getBMI(160,60)}입니다')

# 기능 : 2개의 정수와 사용자가 선택한 연산방법(+,-,*,/)에 대한 결과 출력하기
# 이름 : selectCalc
# 재료 : num1,num2,op
# 결과 : 계산결과

def selectCalc():
    num1 = int(input('번호를 입력해 주세요'))
    op = input('연산자를 입력해 주세요')
    num2 = int(input('번호를 입력해 주세요'))

    if op == '+':
        print(f'{num1} + {num2} = {num1+num2}')
    elif op =='-':
        print(f'{num1} - {num2} = {num1-num2}')
    elif op == '/':
        print(f'{num1} / {num2} = {num1/num2}')
    elif op == '*':
        print(f'{num1} * {num2} = {num1*num2}')
    else:
        print('잘못된 연산자 입니다.')
selectCalc()
# -*- coding : utf-8 -*-

# 사용자 정의 함수 실습 (5) -----------------------------------------
# 여러개의 결과 반환하기

# 기능 : 숫자들 중에서 가장 큰 값, 가장 작은 값을 돌려주기
# 이름 : getMaxMin
# 재료 : 숫자 리스트
# 결과 : 가장 큰 값, 가장 작은 값

def getMaxMin(nums):
    maxV=max(nums)
    minV=min(nums)
    return maxV,minV

print(getMaxMin(nums=[1,2,3,4,5,6,7,8,9,10]))

# 기능 : 2개 정수에 대한 4칙연산(+,-,*ㅡ/)결과 반환
# 이름 : fourCalc
# 재료 : num1,num2
# 결과 : 덧셈, 뺄셈, 곱셈, 나눗셈 결과 반환

def fourCalc(num1,num2):
   return num1+num2,num1-num2,num1*num2,num1/num2 if num2 !=0 else None

print(fourCalc(71,0))

def 함수명(*매개변수) :

      실행문

      실행문

      return 반환값

# -*- coding : utf-8 -*-

# 사용자 정의 함수 실습 (7)--------------------------------
# 재료 갯수를 가젼 즉 유동적인 함수 => 가변인자 함수

# 기능 : 입력 받은 숫자의 합계 구하기
# 이름 : getSum
# 재료 : 0개~N개 *nums
# 결과 : 합계 값

def getSum(*nums):
    # 리스트 자료형의 nums
    # 내장함수 => sum
    # result=0
    # for num in nums:
    #   result += num
    return sum(nums)

print(getSum(1,2,3,4,5,6,7,8,9))

# 기능 : 회원가입 시 정보 입력받아서 출력하는 함수
# 이름 : join
# 재료 : 의미를 가진 값, 갯수는 유동적 **data
# 결과 : 없음

def join(**data):
    print(data)

    for k,v in data.items():
        print(k,v)

join(name='hone',age=3,gender='F')
join()
join(email='nana@gmail.com')
join(phone='010-2222-1212',id='AAA',birth='201010')

변수에 함수 담기 

함수도 class'function' 타입 

 

lambda(람다) 이름없는 한 줄 함수, 즉 '익명함수'

lambda 인수1,인수2, ... : 실행코드

변수명 = lambda 인수1, 인수2, ...: 실행코드

# -*- coding : utf-8 -*-

# 람다함수 또는 익명함수-----------------------------
# 한줄로 만들어지는 함수
# def, 이름없음

def add(a):
    return a+a

print(add(10))

# -----------------------------------------------------

ret=(lambda a: print(f'hello {a}'))('Jina')    # hello Jina
print(f'ret => {ret}')                         # None

ret=(lambda a,b:{a+b})(10,2)
print(f'ret => {ret}')                         # {12}

# 변수에 저장하기
add=lambda x,y:x+y
print(add(1,2))

# 리스트에 저장하기
cal=[lambda x,y:x+y, lambda x,y:x-y, lambda x,y:x/y]
print(cal[0](1,5))
print(cal[1](10,20))
print(cal[2](1,2))

# 람다함수가 활용되는 내장함수 -------------------------------
# map(함수명,여러개 데이터를 가진 자료형)
numberStr=['1','2','3','4']
numberStr[0]=int(numberStr[0])    # 1 <= int('1')
numberStr[1]=int(numberStr[1])
numberStr[2]=int(numberStr[2])
numberStr[3]=int(numberStr[3])

index=0
for num in numberStr:
    numberStr[index] = int(num)
    index += 1
print(numberStr)                # [1, 2, 3, 4]

# map() 내장함수 사용
value=list(map(int,numberStr))
print(f'value => {value}')      # value => [1, 2, 3, 4]

data=[1,2,3,4,5,6,7,8,9,10]
value=list(map(lambda x:x*x,data))
print(f'value => {value}')      # value => [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

# filter() 함수 ---------------------------------------
# 조건에 맞는 것만 걸러내기
# filter object => 타입 변환
value=list(filter(lambda x : x%2 ==0, data))    # value => [2, 4, 6, 8, 10]
print(f'value => {value}')

value=list(filter(lambda x : x>5, data))        # value => [6, 7, 8, 9, 10]
print(f'value => {value}')

value=list(filter(lambda x : not x>5,data))     # value => [1, 2, 3, 4, 5]
print(f'value => {value}')

 

 

Comments