Data Science/Python

[SWEA] 함수의 기초 - 연습문제(6319,6320)

에너지_2 2025. 2. 8. 16:25

※ 출처: https://swexpertacademy.com/

함수의 개념과 목적 함수 호출 및 선언 함수의 유형 함수와 매개변수 고급 함수 사용법

 

언팩 연산자(*)

-매개변수의 개수를 가변적으로 사용할 수 있도록  언팩 연산자(*) 제공

-매개변수에 적용 시 인자를 tuple 형식으로 처리

 

📒언팩 연산자를 사용하는 tuple 형식의 가변 매개변수

def calc_sum(*params):
    print(params) #(1,2) 튜플형식
    total = 0
    for val in params:
        total += val
    return total

ret_val = calc_sum(1,2)
print(f"반환값: {ret_val}") #반환값: 3

 

📒명시적 매개변수와 가변 매개변수의 혼합 사용

def calc_sum2(precision, *params):
    if precision == 0:
        total = 0 
    elif 0 < precision < 1:
        total = 0.0

    for val in params:
        total += val
    return total

ret_val = calc_sum2(0.5,1,2)
print(f"반환값: {ret_val}") #반환값: 3.0


키워드 언팩 연산자(**)

-매개변수의 개수를 가변적으로 사용할 수 있도록  언팩 연산자(*) 제공

-매개변수에 적용 시 인자를 Dictionary 형식으로 처리

def use_keyword_arg_unpacking(**params):
    for key in params.keys():
        print(f"{key}: {params[key]}")

use_keyword_arg_unpacking(key1=1, key2=2, key3=3)
#key1: 1
#key2: 2
#key3: 3

 

기본 값을 갖는 매개변수

- 기본 값을 가지는 매개변수는 일반 매개변수 뒤에 위치해야 함

def calc(x, y, operator="+"):
    if operator == "+":
        return x + y
    else:
        return x - y
        
ret_val = calc(10, 5)      #15
ret_val = calc(10, 5, "+") #15

 

scope

- 변수의 유효범위

- 어디서나 접근 가능한 전역 변수        -> 전역 스코프

- 함수 내에서만  접근 가능한 지역변수 -> 함수 스코프

 

📒함수 내에서 global(전역) 변수에 접근하기

def change_global_var():
    global x
    x += 1

x = 5
change_global_var()
print(f"전역변수 x의 값: {x}")

 

📒매개변수에 함수 전달하기

def calc(fn, x, y):
    return fn(x, y)
    
def plus(x, y):
    return x + y
    
def minus(x, y):
    return x - y

#calc(fn, x, y)
print(calc(plus,10, 5))  
print(calc(minus,10, 5 ))

 

람다식

- 매번 fn 을 만드는 것은 불편하기에 람다식이 나옴

-  Lambda 매개변수 : 반환값

- 변수에 저장해 재사용이 가능한 함수처럼 사용

- 기존의 함수처럼 매개변수의 인자로 전달

- 함수의 매개변수에 직접 인자로 전달

def calc(fn, x, y):
    return fn(x, y)
    
print(calc(lambda a, b: a + b, 10, 5))
print(calc(lambda a, b: a - b, 10, 5))


8. 함수의 기초 - 연습문제 1

6319. [파이썬 프로그래밍 기초(1) 파이썬의 기본 구조와 기초 문법] 8. 함수의 기초 1  D1

❌ 다음의 결과와 같이 반목문을 이용해 단어의 순서를 거꾸로 해 반환하는 함수를 작성하고

그 함수를 이용해 회문(앞뒤 어느 쪽에서도 같은 단어여부를 판단하는 코드를 작성하십시오.

# input
eye
# output
eye
입력하신 단어는 회문(Palindrome)입니다.
더보기

[1]

in_val = input()
in_len = len(in_val)
cnt_i = 0
palindrome = 1 #회문 유무 판단

for c in in_val:
    compare_i = in_len - (cnt_i + 1)
    if  (compare_i > (in_len//2)):
        if (c != in_val[compare_i]) :
            palindrome = 0
            break
    cnt_i += 1

print(f"{in_val}")
if palindrome:
    print("입력하신 단어는 회문(Palindrome)입니다.")

 

[2] 문자열 역순 

in_val = input()
compare_val = in_val[::-1] #문자열 역순

print(f"{in_val}")
if in_val == compare_val:
    print("입력하신 단어는 회문(Palindrome)입니다.")

8. 함수의 기초 - 연습문제 2

6320. [파이썬 프로그래밍 기초(1) 파이썬의 기본 구조와 기초 문법] 8. 함수의 기초 2   D1

⭕️ 다음과 같이 사용자 2명으로부터 가위, 바위, 보를 입력 받아

가위, 바위, 보 규칙이 정의된 함수를 이용해 승패를 결정하는 코드를 작성하십시오.

더보기
input(), input() #해당 문제에서는 의미없음

def cal(x, y): # x 값 기준으로 승리 판단
    x_score = 1
    if x == '가위':
        if y == '바위':
            x_score = 0
    elif x == '바위':
        if y == '보':
            x_score = 0
    else:
        if y == '가위':
            x_score = 0
    return x_score

user1_val = input()
user2_val = input()
if cal(user1_val,user2_val) :
    print(f"{user1_val}가 이겼습니다!")
else:
    print(f"{user2_val}가 이겼습니다!")