본문 바로가기

Programming/Python

[Python] 파이썬 기초 공부 07 (feat. 나도코딩)_함수

728x90

오늘은 함수를 공부했어요~

드디어 문법을 이용해서

뭔가를 만들 수 있게 됐습니다

데이터 분석을 하는 그날까지 정주행 합시다!

 

 

1. 함수 정의: def

 기본 공식: 

def 함수이름(   ): 함수내용 으 정의

함수를 쓰고 싶을 함수( ) 부른다.

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

open_account() #새로운 계좌가 생성 되었습니다

2. 전달값과 반환값: 함수 중에 값을 전달하고 반환받는 함수를 정의하고 사용하는

 기본 공식: 

def 함수이름( 전달값 ): 함수내용 return 반환값 으로 정의

** 전달 값은 변수로 입력가능 하며 콤마(,) 사용하여 여러 입력 가능

** 마치 튜플과 같음

함수(전달값) 으로 부를 있다. 전달값의 변수는 따로 선언을 해도 되고,

자체를 함수 안에 입력 해도 된다.

만약 변수 = 함수(전달값) 으로 부른다면 변수에 저장되는 값은 반환값이다.

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

balance = 0
deposit(balance, 1000)  #입금이 완료되었습니다. 잔액은 1000 원 입니다.
balance = deposit(balance, 1000)  #입금이 완료되었습니다. 잔액은 1000 원 입니다.
print(balance)  #1000

 

3. if 조건문을 활용한 함수 정의

함수의 내용은 조건문, 반복문 등을 다양하게 사용하여 정의 할 수 있다.

def deposit(balance, money): #입금
    print("입금이 완료되었습니다. 잔액은 {0} 원 입니다." .format(balance + money) )
    return balance + money
    
def withdraw(balance, money): #출금
    if balance >= money: #잔액이 출금보다 많으면
        print("출금이 완료되었습니다. 잔액은 {0} 원입니다." .format(balance - money))
        return balance - money
    else:
        print("출금이 완료되지 않았습니다. 잔액은 {0} 원입니다." .format(balance))
        return balance

balance = 0
balance = deposit(balance, 1000)
balance = withdraw(balance, 2000)  #출금이 완료되지 않았습니다. 잔액은 1000 원입니다.
balance = withdraw(balance, 500)  #출금이 완료되었습니다. 잔액은 500 원입니다.

4. 반환 (return) 튜플 형식으로 반환 가능하다

def withdraw_night(balance, money):
    commission = 100 # 수수료 100원
    return commission, balance-money-commission

balance = 0
balance = deposit(balance, 1000)
commission, balance = withdraw_night(balance, 500) 
#balance는 deposit 함수를 거쳐 반환된 값이 전달 됨
#money변수에 500이 전달 됨
print("수수료는 {0} 원이며, 잔액은 {1}원 입니다" .format(commission, balance))
#수수료는 100 원이며, 잔액은 400원 입니다

 TIP: 줄 바꿀 때 역슬러쉬(\) + 엔터 

 

5. 기본값 설정

전달 값의 변수를 넣을 변수를 정의하면 기본값으로 설정할 있음

기본 값을 설정하면 함수를 부를 따로 입력하지 않아도

def profile(name, age=17, main_lang="파이썬"):
    print("이름: {0}\t나이 : {1}\t주 사용 언어: {2}" \
        .format(name, age, main_lang))

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

6. 키워드

함수에서 전달 받는 매개 변수의 값을 호출 ,

변수를 키워드로 사용하여, 값을 정의하면 전달 값으로 사용할 있음

순서에 상관 없이 정의된 함수에서의 순서로 출력

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

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

TIP: end=” “를 print문 안 끝에 넣으면 다음 줄의 print 문이 줄 바꿈 없이 연속되서 출력됨

 

7. 가변인자

전달 값에 변수를 일정 대로 넣으면, 변수를 늘리기 힘들다

   또한, 변수 값의 보다 적을 경우에도 변수를 빈칸으로 넣어야 한다

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

profile("유재석", 20, "파이썬", "자바", "C", "C++", "C#")
#이름: 유재석    나이 : 20        파이썬 자바 C C++ C#
profile("김태호", 25, "kotlin", "swift", "", "", "")
#이름: 김태호    나이 : 25        kotlin swift

가변인자와 for문을 사용하여 변수의 수를 늘릴 있음

    가변인자: *변수

def profile(name, age, *language):
    print("이름: {0}\t나이 : {1}\t" .format(name, age), end=" ")
    for lang in language:
        print(lang, end=" ")
    print()  # 다음 함수를 부를 때 줄 바꿈

profile("유재석", 20, "파이썬", "자바", "C", "C++", "C#", "Javascript")
#이름: 유재석    나이 : 20        파이썬 자바 C C++ C# Javascript 
profile("김태호", 25, "kotlin", "swift", "", "", "")
#이름: 김태호    나이 : 25        kotlin swift

8. 지역변수와 전역변수

a 지역변수: 함수 내에서만 있는 변수

b. 전역변수: 프로그램 내에 모든 공간에서 있는 변수

gun = 10 #전역변수 

def checkpoint(soldiers): #병사 수
    gun = 20 #지역변수
    gun = gun -soldiers  # 남은 총은 총 수에서 병사 수 뺀 값
    print("[함수 내] 남은 총: {0}" .format(gun))

print("전체 총: {0}" .format(gun)) #전체 총: 10
checkpoint(2)  #[함수 내] 남은 총: 18
print("남은 총: {0}" .format(gun))  #남은 총: 10

 

전역변수를 지역변수로 불러와서 쓰고 싶을 함수 내에 global 변수이름 넣는다.

gun = 10 #전역변수 

def checkpoint(soldiers): #병사 수
    global gun #전역변수를 불러옴
    gun = gun -soldiers  # 남은 총은 총 수에서 병사 수 뺀 값
    print("[함수 내] 남은 총: {0}" .format(gun))

print("전체 총: {0}" .format(gun)) #전체 총: 10
checkpoint(2)  #[함수 내] 남은 총: 8
print("남은 총: {0}" .format(gun))  #남은 총: 8

다른 방법으로는 정의 할 때, 전역변수를 함수의 전달 값과 반환값으로 넣는다

gun = 10 #전역변수 

def checkpoint(gun, soldiers): #전역변수 값 10과 병사 값을 전달한다
    gun = gun -soldiers  
    print("[함수 내] 남은 총: {0}" .format(gun))
    return gun

print("전체 총: {0}" .format(gun)) #전체 총: 10 - 전역변수 값
gun = checkpoint(gun, 2)  
#변수 gun에 함수에 전역변수 10과 soldiers=2의 값을 넣어 반환 값을 저장한다
#즉 10-2=8이 출력된다
#[함수 내] 남은 총: 8
print("남은 총: {0}" .format(gun))  #남은 총: 8

9. Quiz

표준 체중을 구하는 프로그램을 작성하시오.

* 표준 체중: 개인의 키에 적당한 체중

 

(성별에 따른 공식)

남자: (m) X (m) X 22

여자: (m) X (m) X 21

 

조건1: 표준 체중은 별도의 함수 내에서 계산

* 함수명: std_weight

* 전달값: (height), 성별(gender)

 

조건2: 표준 체중은 소수점 둘째자리까지 표시: round(함수, 2)

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

height=int(input("키는(cm)?: "))
gender=input("남자?/여자?: ")
weight=round(std_weight(height, gender), 2)
print("키 {0}cm {1}의 표준 체중은 {2}kg 입니다." .format(height, gender, weight))
#키는(cm)?: 175
# 남자?/여자?: 남자
# 키 175cm 남자의 표준 체중은 67.38kg 입니다.

 

오늘은 여기까지~

티스토리에 코드를 넣는 법을 이제야 알았습니다

··" 더보기를 누른 후 

코드 블럭을 누른 다음 코드를 넣으면 끝

이렇게 간단하고 좋은 걸 그동안 

표로 넣느라 괜한 고생 했네요~

파이썬 기초 공부 정주행 같이해요~

 


 

https://addvalueforme.tistory.com/entry/Python-파이썬-기초-공부-06-feat-나도코딩If-조건문-forwhile-반복문?category=773689

 

[Python] 파이썬 기초 공부 06 (feat. 나도코딩)_If 조건문, for/while 반복문

오늘은 C언어 중에서 가장 좋아했던 if문 for문 while문 파이썬 공부가 힘들어도 실력이 없다면 계속 공부해야하고 조건을 만족할 때까지 반복하는 그런 느낌 1. if 조건 함수 1) 조건문 구조 if 변수 == 데이터:..

addvalueforme.tistory.com

https://addvalueforme.tistory.com/entry/Python-파이썬-기초-공부-05-feat-나도코딩자료-구조?category=773689

 

[Python] 파이썬 기초 공부 05 (feat. 나도코딩)_자료 구조

오늘의 파이썬 강좌는 자료 구조에 대해 배우기 리스트, 사전, 튜플, 세트에 대해 각각 배우고 서로의 타입을 변경까지 하기 결론적으로 리스트와 사전을 가장 많이 사용할 것 같음 1. 리스트: [ ] 대 괄호 안에..

addvalueforme.tistory.com

https://addvalueforme.tistory.com/entry/Python-파이썬-기초-공부-05-feat-나도코딩문자열?category=773689

 

[Python] 파이썬 기초 공부 04 (feat. 나도코딩)_문자열

오늘의 파이썬 강좌는 문자열, 슬라이싱, 탈출문자 배우기 점점 복잡해지고 있지만 난 괜찮아~ 1. 파이썬 문자열 1. 문자열 1) 문자열 한 줄: ‘ㅋㅋ’(작은 따옴표 1번), “ㅋㅋ”(큰 따옴..

addvalueforme.tistory.com

https://addvalueforme.tistory.com/entry/Python-파이썬-기초-공부-03-feat-나도코딩?category=773689

 

[Python] 파이썬 기초 공부 03 (feat. 나도코딩)_연산자와 함수

오늘의 파이썬 강좌는 연산자와 함수 배우기 독학으로 배우려고하지만 나도코딩 강좌 덕분에 수월하게 정주행 중~ 1. 연산자 1) 더하기: +, 곱하기: *, 나누기: / print(1+1) #2 print(3+2) #1 print (5*2) #10 p..

addvalueforme.tistory.com

https://addvalueforme.tistory.com/entry/Python-기초-공부-02-feat-나도코딩?category=773689

 

[Python] 파이썬 기초 공부 02 (feat. 나도코딩)_설치와 자료형 배우기

오늘은 설치부터 자료형까지 Start 1. #파이썬설치 https://www.python.org/ “Downloads” → “Download Python 3.8.2” (버전은 바뀔 수 있음) 2. #Visual Studio Code 설치 https://..

addvalueforme.tistory.com

https://addvalueforme.tistory.com/entry/Python-기초-공부-01-feat-나도코딩?category=773689

 

[Python] 파이썬 기초 공부 01 (feat. 나도코딩)_강의소개

파이썬 공부 시작!! 요즘 파이썬 강의를 찾다보니 인강/오프라인 등등 강의가 쏟아져 나오는데.. 너무 비쌈!!! 데이터 사이언스가 유행이라지만 이건 호갱이 모시는 수준 같음... 그러다 찾은 기초 강의 나도코딩..

addvalueforme.tistory.com

 

728x90