관리 메뉴

Jerry

python #2 본문

etc/python

python #2

juicyjerry 2021. 12. 23. 12:57
반응형
# 함수 : 어떤 역할을 하는 박스
def open_account():
    print("새로운 계좌가 생성되었습니다.")


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

balance = 0 # 은행 잔고
balance = deposit(balance, 1000)
# balance = withdraw(balance, 2000)
# balance = withdraw(balance, 500)

print(balance)

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

'''
안녕하세요!

withdraw_night 함수의 리턴 부분을 보시면

두 개의 결과값을 반환해주고 있습니다!

def withdraw_night(balance, money):

  ...

  return comission, balance-money-comission

파이썬에서 여러 개의 리턴값을 반환할 때는

실제로는 튜플 ( (a, b) 와 같은 형태) 타입이 반환됩니다.

튜플을 변수에 할당할 때, 순서에 맞게 각각 값을 할당할 수 있습니다.

이를 unpacking 한다고 합니다. # 여러개의 객체를 포함하고 있는 하나의 객체를 풀어줍니다.

(예시)

val1, val2 = (10, 20)

질문해주신 것 처럼 튜플 형태로 하나의 변수에 할당 할 수도 있습니다.

하나의 변수로 함수 리턴값을 받고, 이후에 각각 원하는 변수에 할당 할 수도 있겠죠?
'''

 

 

 

 

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

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

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

# profile("유재석")
# profile("김태호")


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

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


# 가변인자
def profile(name, age, lang1, lang2, lang3, lang4, lang5):
    print("이름 : {0}\t나이 : {1}\t".format(name, age))
    # print("이름 : {0}\t나이 : {1}\t".format(name, age), end=" ") # 줄바꿈 방지
    print(lang1, lang2, lang3, lang4, lang5)

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#")
profile("김태호", 25, "Kotlin", "Swift", "", "", "")

    
# 지역변수(함수 내에서), 전역변수(모든 공간)
gun = 10
def checkpoint(soldiers): # 경계근무
    global gun # 전역 공간에 있는 gun 사용
    gun = gun - soldiers
    print("[함수 내] 남은 총 : {0}".format(gun))



def checkpoint_ret(gun, soldiers):
    gun = gun - soldiers
    print("[함수 내] 남은 총 : {0}".format(gun))
    return gun

print("전체 총 : {0}".format(gun))
# checkpoint(2) # 2명이 경계근무 나감
gun = checkpoint_ret(gun, 2)
print("남은 총 : {0}".format(gun))



def std_weight_formula(height, gender):
    if (gender == "남성"):
        return height * height * 22 
        # return round(height * height * 22, -2) 
    elif (gender == "여성"):
        return height * height * 21
    
height = 175
gender = "남성"
std_weight = round(std_weight_formula(height/100, gender), 2)
print("키 {0}cm {1}의 표준 체중은 {2}kg입니다.".format(height, gender, std_weight))

 

 

 

 

 

반응형

'etc > python' 카테고리의 다른 글

python #3  (0) 2021.12.23
[python] 기본 다지기 #1  (0) 2021.12.22