본문 바로가기

프로그래밍 공부/Python

[파이썬 기초 4강] 함수(전달값과 반환값, 기본값 ,가변인자, 지역변수와 전역변수) + 성별 적정체중 예측

반응형

 

 

 

안녕하세요

27년차 진로탐색꾼 조녁입니다!! 

오늘은 파이썬에서 함수를 어떻게 사용하는 지 공부해봤습니다.

 

파이썬 설치 방법은 아래 글 참고해주세요! (주피터 노트북 환경 + 구글 클라우드 사용이 가능한 Colab 환경 추천드립니다.)

jonhyuk0922.tistory.com/3

 

[코드프레소 X AI 양재허브] AI/ML 기초교육 1일차

안녕하세요. 26년차 진로탐색꾼 조녁입니다! 이번에 제가 탐색해볼 영역은 AI/ML 분야입니다~. 좋은 기회로 온라인 4일+ 오프라인 4일 강의를 듣게 되어 매일 배운 부분들 복습하면서 남기려 합니

jonhyuk0922.tistory.com

 

파이썬에 대한 기초적인 내용이지만 기억하면 좋을 것들이니 가볍게 한 번 봐주세요~ !

모든 코드는 아래 git_hub 에 올려둔 Colab 노트북 참고 부탁드려요. (앞부분 내용도 포함되어있습니다.)

gist.github.com/jonhyuk0922/55957cd35d9a82e064e613ac95fcc951#file-_-ipynb

 

나도코딩_파이썬 기본편(자료구조, 제어문,함수)

나도코딩_파이썬 기본편(자료구조, 제어문,함수). GitHub Gist: instantly share code, notes, and snippets.

gist.github.com

*궁금하신 내용은 댓글에 질문 남겨주세요! 

 

 

파이썬 기초 4강 내용

1. 함수란?

2. 전달값과 반환값

3. 기본값 , 키워드값

4. 가변인자

5. 지역변수와 전역변수

6 성별 적정체중 예측

 

1. 함수란?

 -> 함수란 , 입력값이 있고 출력값이 있는 통로다.

 

def open_account():
  print("새로운 계좌가 생성되었습니다.")

open_account()

>> 새로운 계좌가 생성되었습니다.

 

 

2. 전달값과 반환값

1) 전달값 :  balance(잔고) , money(입금) -> 반환값 : balance + money 인 함수 예시

 

eg1) 은행 입금 안내해주는 함수

 

def deposit(balance, money):
  print(f"입금이 완료되었습니다. 잔액은 {balance+money}원입니다.")
  return balance + money

balance = 0 #잔액
balance = deposit(balance,1000)
print(balance)

 

eg2) 은행 출금 안내해주는  함수 ( *잔고 부족 시 출금 불가 안내 기능)

 

def withdraw(balance,money):
  if balance > money:
    print(f"출금이 완료되었습니다. 잔액은{balance-money}원입니다.")
    return balance - money
  else:
    print(f"출금이 완료되지 않았습니다. 잔액은 {balance}원입니다.")
    return balance

balance = 0 #잔액
balance = deposit(balance,2000)
#balance = withdraw(balance,3000)
balance = withdraw(balance,500)

 

eg3) 심야시간 수수료 붙을 떄

 

def withdraw_night(balance,money): #저녁에 출금
    commission = 100 #수수료 100원
    return commission, balance- commission - money

commission, balance = withdraw_night(balance,500)
print(f"수수료 {commission}원이며, 잔액은 {balance}원입니다.")

 

3. 기본값 , 키워드값

1)  특정 전달값이 모든 경우 동일할때, 함수 전달값에 기본값을 지정하여 사용

 

eg1) 프로필을 나타내는 함수 생성

 

def profile(name, age, main_lang):
  print(f"이름 : {name}\t나이 : {age}\t주 사용 언어 : {main_lang}")

profile("유재석",20,"파이썬")
profile("김태호",25,"자바")

 

eg2) 함수의 전달값 중 'age' , 'main_lang' 에 기본값 사용

 

#같은 학교, 같은 학년, 같은 반, 같은 수업일 때.
def profile(name, age=20, main_lang="파이썬"):
  print(f"이름 : {name}\t나이 : {age}\t주 사용 언어 : {main_lang}")

profile("유재석")
profile("김태호")

 

 

2) 키워드에 값을 넣어 함수를 호출하면, 순서가 뒤죽박죽이더라도 파라미터 순서대로 출력해준다.

 

def profile(name, age, main_lang):
  print(name, age, main_lang)

profile(name="유재석",main_lang="파이썬",age=20)
profile(main_lang="자바",age=25,name="김태호")

>> 유재석 20 파이썬

>> 김태호 25 자바

 

 

4. 가변인자

1)  가변인자를 사용하면, 파라미터 갯수와 입력값의 갯수를 맞춰주지 않아도 된다.

 

eg1) 가변인자 미사용 , 입력값의 갯수와 함수의 파라미터 갯수가 같아지도록 일일이 맞춰줘야 한다.

 

def profile(name, age, lang1,lang2,lang3,lang4,lang5):
  print(f"이름 :{name}\t나이 : {age}\t", end=" ")
  print(lang1,lang2,lang3,lang4,lang5)

profile("유재석",20,"Python","Java","C","C++","C#")
profile("김태호",25,"Kotlin","SWift"," "," "," ")

 

eg1) 가변인자 사용 , 파라미터 앞에 " * "를 붙여준다.

 

def profile(name, age, *language):
  print(f"이름 :{name}\t나이 : {age}\t", end=" ")
  for lang in language:
    print(lang,end=" ")
  print()

profile("유재석",20,"Python","Java","C","C++","C#","Go")
profile("김태호",25,"Kotlin","SWift")

 

 

5. 지역변수와 전역변수

1)  지역변수 : 함수가 호출될 때 생성되서 함수가 끝날 때 사라지는 변수 vs 전역변수 : 어디서든 부를 수 있는 변수

 

eg) 전체 총의 갯수가 주어지고, 경계근무를 나간 후 남은 총의 갯수 파악하는 함수

 

-전역변수로 사용 *global 사용

 

gun = 10
 
def checkpoint(soldiers): #경계 근무
  #gun = 20
  global gun #전역 공간에 있는 gun 사용
  gun = gun - soldiers
  print(f"[함수 내] 남은 총 : {gun}")
  

print(f"전체 총 : {gun}")
checkpoint(2) #2명이 경계 근무 나감
print(f"남은 총 : {gun}")

 

 

-지역변수로 사용, 함수 파라미터로 gun을 받음 , 그리고 함수 마지막에 return 해준다.

 

gun = 10

def checkpoint_return(gun, soldiers):
  gun = gun - soldiers
  print(f"[함수 내] 남은 총 : {gun}")
  return gun
  
  
print(f"전체 총 : {gun}")
gun = checkpoint_return(gun,2)
print(f"남은 총 : {gun}")

 

위의 두 경우 결과는 같지만 , 전역변수가 많아지면 헷갈리니까 지역변수로 쓰는 걸 추천함.

 

 

6. Quiz : 성별 적정 체중 예측하기

 

 

스스로 풀어보신 후 아래로 가시길 추천드립니다 ㅎㅎ

 

*문제풀이 

우선 경우를 나눠줘야한다if문을 써서 우리가 받아들이는 gender 가 "남자"인지, "여자"인지로 나눠준다.

그리고 각각 알맞은 수식을 리턴해준다.

체중(weight)은 소숫점 두가리까지만 보고 싶으므로 , 아래와 같이 round함수에 두번째 인자로 2를 넣어준다.

 

weight = round(std_weight(height/100,gender), 2)

 

정답코드

def std_weight(height,gender):
  if gender == "남자":
    return height * height * 22
  else:
    return height * height * 21
    

height = 186 #cm단위
gender = "남자"
weight = round(std_weight(height/100,gender), 2)
print(f"키 {height}cm {gender}의 표준 체중은 {weight}kg 입니다.")

 

 

적정체중은 적정체중일뿐!! 내 몸무게가 내게 가장 적합한 몸무게다!! (라고 생각해야 오늘 저녁도 맛나게 먹지~) 

 

 

 

 

*본 포스팅은 유튜브 '나도코딩' 강의를 듣고 작성하였습니다.

특별히 긴 강의를 인프런이라는 사이트에서 파트별로 나눠서 제공해줘서 손쉽게 접할 수 있었습니다. 아래 링크 첨부하겠습니다.

 

참고자료

반응형