파이썬 입문

ch06. 함수

hayoung.ee 2024. 6. 22. 01:28
def open_account():
    print("새로운 계좌를 개설합니다.")

open_account()

def deposit(balance, money):
    print("{0}원을 입금했습니다. 잔액은 {1}원입니다.".format(money, money+balance))
    return balance+money

def withdraw(balance, money):
    if balance >= money:
        print("{0}원을 출금했습니다. 잔액은 {1}원입니다.".format(money, balance-money))
        return balance-money
    else:
        print("잔액이 부족합니다. 잔액은 {}입니다.".format(balance))
        return balance
    
def withdraw_night(balance, money):
    commission =100
    print("업무 시간 외에 {}원을 출금했습니다.".format(money))
    return commission, balance-money-commission
    
balance=0
balance= deposit(balance, 1000)
balance= withdraw(balance, 2000)
balance= withdraw(balance, 500)

commission, balance =withdraw_night(balance, 300)
print("수수료는 {0}원이며, 잔액은 {1}원입니다.".format(commission, balance))

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

profile("찰리", 20, "파이썬")
profile("루시", 25, "자바")

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

profilee("찰리")
profilee("루시")
profilee("찰리", 22)
profilee("찰리", 24, "자바")

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

pprofile(main_lang="python", name="charlie", age=21)

def proofile(name, age, lang1, lang2, lang3):
    print("name: {0}\tage: {1}\t".format(name, age), end=" / ")
    print(lang1, lang2, lang3)

proofile("charile", 20, "python", "jave", "c")
proofile("anna", 22, "python", "", "")

def prrofile(name, age, *language): #*가변인자를 뜻함(전달값이 몇 개가 들어오든 묶어서 튜플로 인식)
    print("name: {0}\tage :{1}\t".format(name, age), end=" ")
    for lang in language:
        print(lang, end=" ")

    print()

prrofile("any", 20, "python", "java", "c", "c+", "java script")

glasses =10
def rent(people):
    global glasses
    glasses=glasses-people
    print("[함수 내부] 남은 3D 안경 개수: {0}".format(glasses))

print("전체 안경 개수: {0}".format(glasses))
rent(2)
print("남은 안경 개수: {0}".format(glasses))

glasses =10
def rent_return(glasses, people):
    glasses=glasses-people
    print("[함수 내부] 남은 안경 개수: {0}".format(glasses))
    return glasses
print("전체 안경 개수: {0}".format(glasses))
glasses=rent_return(glasses, 2)
print("남은 안경 개수: {0}".format(glasses))

#실습 문제
"""
문제)표준 체중을 구하는 프로그램을 작성하세요
표준체중: 키에 따른 평균 체중
성별에 따른 표준 체중 공식
남자:키(m)x키(m)x22
여자:키(m)x키(m)x21
조건)
1. 표준 체중은 별도 함수로 계산한다. 단, 키는 미터 단위로 받는다.
함수명:std_weight
전달값: 키(height), 성별(gender)
2. 실행결과에서 표준 체중은 소수점 이하 둘째 자리까지 표시한다.
실행결과)
키 175cm 남자의 표준 체중은 67.38kg입니다.
"""

weight=0

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

height=175
gender="남자"
weight=round(std_weight(height/100, "남자"), 2)
print("키 {0}cm {1}의 표준 체중은 {2}kg입니다.".format(height, gender, weight))

#셀프체크 
"""
문제)미세먼지 수치를 입력받아 대기질 상태를 출력하는 함수를 만들어 보세요
조건)
1. get_air_quality라는 이름으로 함수를 만든다.
2. 이 함수는 전달값으로 미세먼지 수치를 입력받는다.
3. 이 함수는 대기질 상태를 반환한다.
4. 미세먼지 수치에 따른 대기질 상태는 다음과 같다.
좋음:0~30
보통:31~80
나쁨:81~150
매우 나쁨:151 이상
5. 함수에 전달되는 값은 항상 0 이상의 값이라고 가정한다.
"""
def get_air_quality(count):
    if count >=0 and count <=30:
        return "좋음"
    elif count <=80:
        return "보통"
    elif count <=150:
        return "나쁨"
    else:
        return "매우 나쁨"

print(get_air_quality(85))

 

1. 함수

입력값에 따라 출력값이 달라지는 어떤 동작을 수행하는 것

파이썬에는 다양한 기능의 함수가 제공된다. 하지만 모든 기능이 만들어져 있지는 않아서 개발자가 직접 코드를 작성해 필요한 함수를 만들 수 있는데, 이를 사용자 정의 함수라고 한다.

 

2. 전달값과 반환값

함수에는 전달값, 동작, 반환값 이라는 3가지 요소가 있음

전달값- 함수를 호출할 때 전달하는 값, 함수명 뒤 소괄호 속에 정의

함수 본문에서는 전달값들을 활용해 동작을 수행

반환값- 함수의 동작이 끝난 뒤 반환하는 값, return 과 함께 정의

 

3. 기본값

함수에서 매개변수에 미리 지정해둔 값, 기본값이 있으면 전달값을 일일이 적지 않아도 됨

 

4. 키워드 인자

함수를 호출할 때 어떤 매개변수에 값을 전달할지 명시적으로 지정하는 것

 

5. 가변 인자

함수에서 전달값을 받을 때 개수가 달라지는 경우에 전달값 앞에 *를 추가

전달값이 몇 개가 들어오든 묶어서 튜플로 인식

 

6. 지역변수와 전역변수

지역변수는 함수 안에서만 사용할 수 있는 변수이고, 전역변수는 모든 곳에서 사용할 수 있는 변수