파이썬 입문
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. 지역변수와 전역변수
지역변수는 함수 안에서만 사용할 수 있는 변수이고, 전역변수는 모든 곳에서 사용할 수 있는 변수