본문 바로가기

Language/python

혼공학습단 8기 파이썬 4주차

혼공학습단 8기 파이썬 3주차 공부

214p

가변 매개변수: 매개변수를 원하는 만큼 받을 수 있는 함수

def 함수 이름(매개변수, 매개변수, ..., *가변 매개변수):
	//문장

ex) print()

 

[제약]

- 가변 매개변수 뒤에는 일반 매개변수가 올 수 없다.

- 가변 매개변수는 하나만 사용할 수 있다.

 

def print_n_time(n,*values):
    for i in range(n):
        for value in values:
            print(value)
        print()

print_n_time(3,"안녕하세요","즐거운","프로그래밍")

결과

가변 매개변수 뒤에는 일반 매개변수가 올 수 없다는 말의 의미는...

print_n_time("안녕하세요","즐거운","프로그래밍",3)과 같이 사용할 수 없다는 것이다.

 

 

기본 매개변수: 매개변수 = 값의 형태

print(value, ..., sep =' ', end ='\n', file=sys.stdout, flush=False)

[제약]

- 기본 매개변수 뒤에는 일반 매개변수가 올 수 없다.

- 매개변수를 입력하지 않았을 경우, 매개변수에 들어가는 값은 저 기본값이 된다.

 

 

키워드 매개변수

가변 매개변수와 기본 매개변수를 같이 사용하기 위해, 매개변수 이름을 지정해서 입력하는 매개변수이다.

def print_n_time(*values,n=2):
    for i in range(n):
        for value in values:
            print(value)
        print()

print_n_time("안녕하세요","즐거운","프로그래밍",n=2)

※ 참고로 가변매개변수와 기본 매개변수 같이 사용 시, 가변 매개변수가 앞에 와야 한다.

 

 

 

223p

혼공파 4주차 기본미션

직접 해보는 손코딩: 범위 내부의 정수를 모두 더하는 함수

def sum_all(start, end):
    output = 0
    for i in range(start, end  +1):
        output +=i
    return output

print("0 ~ 100: ",sum_all(0,100))
print("0 ~ 1000: ",sum_all(0,1000))
print("50 ~ 100: ",sum_all(50,100))
print("500 ~ 1000: ",sum_all(500,1000))

결과

 

 

어라 이제 추가미션 하려고 했는데 추가미션이 매개변수들을 정리하는 거였다.

공부하면서 처음 알게 된 개념만 정리하는 중이었는데... 나이스~~^__^

 


 

내 맘대로 함수 만들기

# [재귀함수 구현] 팩토리얼 구하기

def factorial(n):
    if n == 0:
        return 1
    else:
        return n* factorial(n-1)
    
num = int(input("factorial(n) 실습. n을 입력하시오 >> "))
print("factorial({}): {}".format(num,factorial(num)))

결과

 

# [재귀함수 구현] 피보나치 수열

counter = 0

def fibonacci(n):
    print("fibonacci({}) 계산 중... ".format(n))
    global counter
    counter += 1
    
    if n == 1:
        return 1
    if n ==2:
        return 2
    else:
        return fibonacci(n-1)+ fibonacci(n-2)
    
    
num = int(input("fibonacci(n) 실습. n을 입력하시오 >> "))
print("factorial({}): {}".format(num,fibonacci(num)))
print("계산에 활용된 덧셈 횟수: ",counter)

결과

참고로 위 코드에서 전역 변수를 사용하기 위해 gloval counter라는 부분을 적어 주었다.

적지 않으면 UnboundLocalError 예외가 발생됨.

global 변수 이름

- 파이썬은 함수 내부에서 함수 외부에 있는 변수를 참조할 수 없다.

- 함수 내부에서 "이 변수는 함수 외부에 있는 변수야" 하고 설명하는 것.