함수 중급

출력과 함수

def my_function(a,b):
    result=  a * b
    return result

a = int(input("첫번째 숫자 :"))
b = int(input("두번째 숫자 :"))

my_function(a,b)

105

첫 글자를 대문자로 변환하기

# 텍스트를 띄어쓰기별로 잘라 리스트로 변환 후 첫글자를 대문자로 변경하는 함수
def format_text(text):
    result = ""
    if text == "":
        return "변환할 텍스트를 입력해 주세요."
    text_list = text.split(" ")
    for stext in text_list :
        stext = stext[0:1].upper()+stext[1:]
        result += stext + " "
    # f_name = name_list[0]
    # l_name = name_list[1]
    # f_name = f_name[0:1].upper()+f_name[1:]
    # l_name = l_name[0:1].upper()+l_name[1:]
    # result = f_name +" "+ l_name
    # print(f"입력한 이름 : {text}")
    # print(f"변환한 이름 : {result}")
    return f"입력한 텍스트 : {text}\n변환한 텍스트 : {result}"

text = input("영어 문장을 입력해주세요. 단어의 첫글자를 대문자로 변환합니다.")
text = text.lower()
print(format_text(text)) #print()로 함수의 return 내용을 출력

# title() 함수
print("title()함수 이용")
title_result = text.title()
print(f"title()함수 이용 변환 : {title_result}")
입력한 텍스트 : i’m late right now. take the shortest way, please.
변환한 텍스트 : I’m Late Right Now. Take The Shortest Way, Please.
title()함수 이용
title()함수 이용 변환 : I’M Late Right Now. Take The Shortest Way, Please.

월별 일수 출력하기

# 윤년 계산 함수
def leapyear(year):
    """윤년을 계산하는 함수"""  #독스트링
    if year % 4 == 0 :
        if year % 100 == 0 :
            if year % 400 == 0 :
                return True
                # print(f"당신이 입력한 {year}은 윤년입니다.")
            else:
                return False
                # print(f"당신이 입력한 {year}은 평년입니다.")
        else:
            return True
            # print(f"당신이 입력한 {year}은 윤년입니다.")
    else:
        return False
        # print(f"당신이 입력한 {year}은 평년입니다.")

#월별 일수 리스트
def days_in_month(year, month):
    """해당 년도의 일수를 호출하는 함수"""  #독스트링
    #윤년 함수 호출
    if leapyear(year) and month == 2 :
        return f"{year}{month}월의 일수는 29일입니다."
    else:
        return f"{year}{month}월의 일수는 {month_days[month-1]}일입니다."

#사용자부터 질의
month_days= [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]

year = int(input("년도를 4자리 숫자로만 입력해 주세요. (예) 1980 : "))
month = int(input("일수를 알고 있는 월을 숫자로 입력해 주세요. :"))

#결과값 출력
print(days_in_month(year, month))

2000년 2월의 일수는 29일입니다.

내가 직접 만든 계산기 프로그램

logo = '''
 _____________________
|  _________________  |
| | JO           0. | |
| |_________________| |
|  ___ ___ ___   ___  |
| | 7 | 8 | 9 | | + | |
| |___|___|___| |___| |
| | 4 | 5 | 6 | | - | |
| |___|___|___| |___| |
| | 1 | 2 | 3 | | x | |
| |___|___|___| |___| |
| | . | 0 | = | | / | |
| |___|___|___| |___| |
|_____________________|

'''
print(logo)
# 계산 순서 지정
repeat = True

# 계산기 연산 함수
def num_calculate(f_num, l_num, operation):
    if operation == "+" :
        result = f_num + l_num
        return result
    if operation == "-" :
        result = f_num - l_num
        return result
    if operation == "*" :
        result = f_num * l_num
        return result
    if operation == "/" :
        result = f_num / l_num
        return result

def calculator(f_num, l_num, operation):
    result_dic ={}
    result_dic["계산결과"] = num_calculate(f_num, l_num, operation)
    return result_dic['계산결과']

index = 1
while repeat :
    if index == 1:
        f_num = int(input("첫번째 숫자를 입력해 주세요. :"))
        operation = input("계산할 연산 기호를 입력해 주세요.(+, -, *, /) :")
        l_num = int(input("두번째 숫자를 입력해 주세요. :"))

    else:
        user_repeat = input(f"계산 결과 {cal_result}에 이어서 계산할까요? 예 = y 또는 아니오 = n ")
        if user_repeat == "n":
            break
        f_num = cal_result
        operation = input("계산할 연산 기호를 입력해 주세요.(+, -, *, /) :")
        l_num = int(input("숫자를 입력해 주세요. :"))

    cal_result = calculator(f_num=f_num, l_num=l_num, operation=operation)

    print(f"{index}번째 계산결과 : {cal_result}")
    index +=1

print("계산 프로그램을 종료합니다.")
1번째 계산결과 : 15
2번째 계산결과 : 375
3번째 계산결과 : 125.0
계산 프로그램을 종료합니다.

Udemy 강의 계산기 프로그램

logo = '''
 _____________________
|  _________________  |
| | JO           0. | |
| |_________________| |
|  ___ ___ ___   ___  |
| | 7 | 8 | 9 | | + | |
| |___|___|___| |___| |
| | 4 | 5 | 6 | | - | |
| |___|___|___| |___| |
| | 1 | 2 | 3 | | x | |
| |___|___|___| |___| |
| | . | 0 | = | | / | |
| |___|___|___| |___| |
|_____________________|

'''
print(logo)

#더하기
def add(n1, n2):
    return n1 + n2

#빼기
def subtract(n1, n2):
    return n1 - n2

#곱하기
def multiply(n1, n2):
    return n1 * n2

#나누기
def divide(n1, n2):
    return n1 / n2

#연산 딕셔너리
#연산기호에 따라 함수를 값으로 연결
operation = {
"+":add,
"-":subtract,
"*":multiply,
"/":divide
}

def calculator():
    num1 = float(input("첫번째 숫자를 입력해 주세요. :"))
    for symbol in operation:  #operation 딕셔너리에서 for 반복문으로 키값 출력
        print(symbol)
    should_continue = True

    while should_continue :
        operation_symbol = input("계산할 연산 기호를 입력해 주세요. :")
        num2 = float(input("다음 숫자를 입력해 주세요. :"))
        #operation 딕셔너리에서 해당 연산기호의 함수이름을 calculation_function에 입력
        calculation_function = operation[operation_symbol]
        #calculation_function에 입력된 숫자 두개(num1, num2)추가하여 answer변수에 저장
        answer = calculation_function(num1, num2)

        print(f"{num1} {operation_symbol} {num2} = {answer}")

        re_continue = input("이어서 계산할까요? 예 = y , 다시 시작 = n ")
        if re_continue == "y" :
            num1 = answer
        else:
            should_continue = False
            calculator() #자신의 함수를 다시 호출하여 새로운 계산을 할 수 있도록 함

calculator()

 _____________________
|  _________________  |
| | JO           0. | |
| |_________________| |
|  ___ ___ ___   ___  |
| | 7 | 8 | 9 | | + | |
| |___|___|___| |___| |
| | 4 | 5 | 6 | | - | |
| |___|___|___| |___| |
| | 1 | 2 | 3 | | x | |
| |___|___|___| |___| |
| | . | 0 | = | | / | |
| |___|___|___| |___| |
|_____________________|


+
-
*
/
5.0 + 0.8 = 5.8
5.8 * 48.0 = 278.4
+
-
*
/
48.0 * 2.0 = 96.0