본문 바로가기

_Programming/Python

Basic.함수

# 함수 (들여씌기 내어쓰기 조심)
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): # 저녁에 출금
    commision = 100 # 수수료
    return commision, balance - money - commision

balance = 0
balance = deposit(balance,3000) # return을 통해 반환된 금액을 balance에 저장함.
balance = withdraw(balance, 2000)
print(balance)
commision, balance = withdraw_night(balance, 500)
print("수수료는 {0}원이며, 잔액은 {1}입니다.".format(commision, balance))


# 기본값 : 값이 반복되기 때문에 아예 설정하는 값.
def profile(name, age, main_lan):
    print("이름 : {0}\t나이 : {1}\t주 사용 언어 : {2}" \
        .format(name, age, main_lan))
profile("고감자", 30, "Python")
profile("정맥주", 27, "photoshop")
 
 # 만약 나이가 같다고 하면
def profile2(name, age = 3, main_lan = "Korean"):
    print("이름 : {0}\t나이 : {1}\t주 사용 언어 : {2}" \
        .format(name, age, main_lan))
profile2("고감자")
profile2("정맥주")


# 키워트값 : 함수를 부를때 키워드를 정해주고 부르면 순서가 뒤죽박죽이어도 순서대로 정상 출력된다.
def profile3(name, age, main_lan):
    print(name, age, main_lan)

profile3(name="고감자", main_lan="Python", age=30)
profile3(main_lan="Photoshop", age=27, name="정맥주")


# 가변인자 : 변수의 갯수가 맞지 않아도 같은 
def profile4(name, age, lang1, lang2, lang3, lang4, lang5):
    print("이름 : {0}\t나이 : {1}\t".format(name,age), end=" ")
    print(lang1, lang2, lang3, lang4, lang5)

profile4("고감자", 30, "Python", "Java", "C", "C++", "C#")
profile4("정맥주", 27, "Photoshop", "illustration", "", "", "")
 # 이때 고감자는 공부를 더 해서 할 줄 아는 언어가 하나 더 늘었다고 하면????  --> 가변인자
def profile5(name, age, *language):
    print("이름 : {0}\t나이 : {1}\t".format(name,age), end=" ")
    for lan in language:
        print(lan, end=" ")
    print()

profile5("고감자", 30, "Python", "Java", "C", "C++", "C#", "JavaScript")
profile5("정맥주", 27, "Photoshop", "illustration")


# 지역변수 : 함수내에서 사용 & 전역변수 : 모든 공간에서 사용
 
 #01 : UnboundLocalError: local variable 'gun' referenced before assignment
 #     초기화 전에 사용되었다고 오류남. 함수 안에 gun이라는게 할당되지 않아서(지역변수)
gun = 10
def checkpoint(soldiers): # 경계근무.
    gun = gun - soldiers
    print("[함수 내] 남은 총 : {0}".format(gun))

print("전체 총 : {0}".format(gun))
checkpoint(2) # 2명이 경계 근무 나감.
print("남은 총 : {0}".format(gun))
 
 #02 : 지역변수로 gun을 사용해줌.
gun = 10
def checkpoint(soldiers): # 경계근무.
    gun = 20
    gun = gun - soldiers
    print("[함수 내] 남은 총 : {0}".format(gun))

print("전체 총 : {0}".format(gun))
checkpoint(2) # 2명이 경계 근무 나감.
print("남은 총 : {0}".format(gun))
# 전체 총 : 10 [함수 내] 남은 총 : 18 남은 총 : 10
 
 #03 : global을 이용하여 전역변수의 gun을 가져다가 씀.  ---> 보통 이렇게 잘 안씀.
gun = 10
def checkpoint(soldiers): # 경계근무.  
    global gun # 전역 공간에 있는 gun을 사용.
    gun = gun - soldiers
    print("[함수 내] 남은 총 : {0}".format(gun))

print("전체 총 : {0}".format(gun))
checkpoint(2) # 2명이 경계 근무 나감.
print("남은 총 : {0}".format(gun))  
# 전체 총 : 10 [함수 내] 남은 총 : 8 남은 총 : 8

 #04 : 매개변수로 gun을 주기   ----> 제일 권하는 방식.
gun = 10
def checkpoint_return(gun, soldiers):
    gun = gun - soldiers
    print("[함수 내] 남은 총 : {0}".format(gun))
    return gun

print("전체 총 : {0}".format(gun))
gun = checkpoint_return(gun, 2) # 2명이 경계 근무 나감.
print("남은 총 : {0}".format(gun))
# 전체 총 : 10 [함수 내] 남은 총 : 8 남은 총 : 8


# Quiz : 표준 체중을 구하는 프로그램을 작성하시오
# * 표준 체중 : 각 개인의 키에 적당한 체중

#(성별에 따른 공식)
# 남자 : 키(m) x 키(m) x 22
# 여자 : 키(m) x 키(m) x 21

# 조건1 : 표준 체중은 별도의 함수 내에서 계산
#         * 함수명 : std_weight
#         * 전달값 :  키(height), 성별(gender)

# (출력예제)
# 키 175cm 남자의 표준 체중은 67.38kg 입니다.

# mine_sol
def std_weight(height, gender):
    if gender == "여자":
        weight = height * height * 21
        return weight
    else :
        weight = height * height * 22
        return weight
height = 164
gender = "여자"
weight = round(std_weight(height / 100, gender), 2)
print("키 {0}cm {1}의 표준체중은 {2}입니다.".format(height, gender, weight))

 
# other_sol
def std_weight1(height, gender): # 키 m단위, 성별 "남자"/"여자"
    if gender == "남자":
        return height * height * 22
    else:
        return height * height * 21
height = 164 # cm단위
gender = "남자"
weight = round(std_weight1(height / 100, gender), 2)
print("키 {0}cm {1}의 표준체중은 {2}입니다.".format(height, gender, weight))

 

 

 

 

출처: www.youtube.com/watch?v=kWiCuklohd

'_Programming > Python' 카테고리의 다른 글

Basic.클래스  (0) 2020.09.11
Basic.입출력  (0) 2020.09.10
Basic.제어문  (0) 2020.09.08
Basic.자료구조  (0) 2020.09.07
Basic.문자열처리  (0) 2020.09.04