파이썬 기초 4
함수
def open_account():
print("새로운 계좌가 생성되었습니다.")
open_account()##호출-전달하는 값이 없음
#전달갑이 있는 함수
#입금
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
def withdraw_night(balance, money): #저녁에 출금
commission = 100
return commission, balance - money - commission #2개의 값을 튜플로 반환
balance = 0
balance = deposit(balance, 1000)
balance = withdraw(balance, 2000) #출금불가
balance = withdraw(balance, 500)
commission, balance = withdraw_night(balance, 500)
print("수수료 {0}원이며, 잔액은 {1}원 입니다.".format(commission, balance))
# print(balance)
기본값
def profile(name, age, main_lang):
print("이름 : {0}\t 나이 : {1} \t 주 사용언어 : {2}".format(name, age, main_lang))
#줄바꿈할때 \ + enter 사용
profile('김지명', 26, 'python')
profile("김태호", 25, "자바")
#같은 학교 같은 학년 같은반 같은 수업
def profile(name, age = 17, main_lang = "파이썬"):
print("이름 : {0}\t 나이 : {1} \t 주 사용언어 : {2}".format(name, age, main_lang))
profile("유재석") #//이름 : 유재석 나이 : 17 주 사용언어 : 파이썬
profile("김태호") #// 이름 : 김태호 나이 : 17 주 사용언어 : 파이썬
키워드값
#키워드 값을 이용하면 순서 상관없이 호출 가능
def profile(name, age, main_lang ):
print(name, age, main_lang)
profile(name = "유재석", main_lang = "파이썬", age = 25)
profile(main_lang = "자바", age = 25, name = "김태호")
가변인자
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, "Python", "Java", "C", "C++", "C#")
profile("김태호", 25, "Kotlin", "Sswift", "", "", "")
# 변수가 한정되어있어 개수를 무조건 맞춰주어야 한다는 불편함이 있음
#가변인자 사용함으로써 개수에 제한을 두지 않아도 됨
def profile(name, age, *language):
print("이름 : {0}\t 나이 : {1}\t". format(name, age), end = " ")
for lang in language:
print(lang, end = " ")
print()
profile("유재석", 20, "Python", "Java", "C", "C++", "C#", "Javascript")
profile("김태호", 25, "Kotlin", "Swift")
#"Javascript"를 추가하고, lang의 개수가 3개 부족해도 error 발생하지 않음
지역변수와 전역변수
gun = 10
def checkpoint(soilders): #경계근무 수
gun = 20
gun = gun - soilders
print("[함수 내] 남은 총: {0}".format(gun))
print("전체 총 : {0}".format(gun)) #전체 총: 10
checkpoint(2) #2명경계근무 나감 #[함수 내] 남은 총: 18
print("남은 총: {0}".format(gun)) #남은 총: 10
// #함수가 호출되어서 사용될 경우 지역변수 안에있는 20이라는 값이 적용
// #외부에 있는 10이라는 값은 변함이 없음
------------------------------------------------------------------
// #global사용: 권장사항은 아님, 코드가 복잡해질 수 있음
gun = 10
def checkpoint(soilders): #경계근무 수
global gun #전역 공간에 있는 gun tkdyd
gun = gun - soilders
print("[함수 내] 남은 총: {0}".format(gun))
print("전체 총 : {0}".format(gun)) #전체 총: 10
checkpoint(2) #2명경계근무 나감 #[함수 내] 남은총: 8
print("남은 총: {0}".format(gun)) #남은 총: 8
------------------------------------------------
// # 전역변수인 "gun"의 개수를 파라미터로 받아옴
def checkpoint_ret(gun, soilders):
gun = gun - soilders
print("[함수 내] 남은 총: {0}".format(gun))
return gun
print("전체 총 : {0}".format(gun)) #전체 총: 10
gun = checkpoint_ret(gun, 2) #2명경계근무 나감 #[함수 내] 남은총: 8
print("남은 총: {0}".format(gun)) #남은 총: 8
Quiz
# *표준 체중: 각개인의 키에 적장한 체중
# (성별에 따른 공식)
# 남자 : 키(m) X 키(m) X 22
# 여자 : 키(m) X 키(m) X 21
# 조건: 표준 체중은 별도의 함수 내에서 계산
# * 함수명 : std_weight
# * 전달값 : 키(weight), 성별(gender):
# 조건2 : 표중 체중은 소수점 둘재자리까지 표시
# (출력예제)
# 키 175cm 남자의 표준 체중은 67.38kg 입니다.
def std_weight(height, gender): #키는 m 단위(실수), 성별 "남자"/ "여자"
if gender == "남자":
return height * height * 22
else:
return height * height * 21
height = 175 #cm단위
gender = "남자"
weight = round(std_weight(height / 100, gender), 2) #소수점 2째자리 까지
print("키 {0}m {1}의 표준 체중은 {2}kg 입니다.".format(height, gender, weight))