Programming/python

Udemy Python Boot Camp Section 6 정리 | 함수 function, while 반복문

자히Zahi 2024. 9. 27. 14:12

* 이 글은 필자가 자신이 배운 내용을 정리하기 위한 것이며, 결코 Udemy 강의를 결제하지 않은 타인의 학습을 고려하여 작성되지 않았습니다.

* 이 글을 학습에 활용하기를 원하신다면, Udemy에서 '[한글자막] Python 부트캠프 : 100개의 프로젝트로 Python 개발 완전 정복' 강의를 구매하시는 것을 권장드립니다.

 

 

강의 듣는 간격이 길어지니까 이 블로그가 빛을 발하고 있다. 이 블로그를 쓰길 정말 잘했다는 생각이 든다... 전 내용이 전혀 기억나지 않는다.

 

아무튼 유데미 파이썬 부트캠프 섹션 6은 거의 함수 관련 설명으로만 이루어진다.

한국에 플레이봇이라는 텍스트 코딩 학습 사이트가 있는데, 플레이봇 비슷한 외국 사이트 리보그로 함수의 사용을 가르친다.

 

섹션 6은 많은 내용이 있지는 않고 예제 퀄리티가 괜찮으니 그래도 강의를 듣는 걸 추천한다. (할인하면 15000원밖에 안 하는데 내용의 질과 양은 한국 강의에 비할 수도 없이 좋다.)

 

나는 그 중에 한 예제만 가져와봤다.

 

 

일단 함수는 무엇일까?

중고등학교 때 배우는 y = x + 2같은 함수 말고, 파이썬에서 함수는 무엇일까?

우리가 알고 있는 print()처럼 괄호가 있으면 함수다.

 

print 함수는 괄호 안에 넣은 것을 출력한다. 정말 간단한 파이썬 내장 함수이다.그런 함수를 우리도 만들 수 있다! 하지만 print 함수와는 약간 다른 느낌이다.

 

python에서 함수란, <자주 쓰이는 코드이긴 한데 몇십줄을 계속 내가 몇번씩 일일이 쓰기는 귀찮으니 그냥 하나의 함수로 정의하고 이 함수가 필요할 때마다 부르자>라는 목적으로 만들어졌다... 이렇게 말하면 이게 뭔 소린가? 싶을 수도 있다.

#code
print("Hola!")
print("Mucho gusto")
print("Como estas?")

#shake hands

print("Hola!")
print("Mucho gusto")
print("Como estas?")

#dance with stranger

print("Hola!")
print("Mucho gusto")
print("Como estas?")

#hug

print("Hola!")
print("Mucho gusto")
print("Como estas?")

#sing some punk rock songs

 

이와 같은 코드가 있다고 치자. 여기에서 주석으로 넣은 행동은 실제로 행동을 하는 것이라고 치고...

이 사람은 지금 안녕하세요, 만나서 반갑습니다, 어떻게 지내세요? 라고 말하는 것을 반복하는데, 그 사이사이에 악수나 포옹을 하는 등 불규칙적인 행동을 하고 있다.

어? 어떤 행동이 반복되고는 있는데 반복문으로 하기엔 그 행동이 연속으로 일어나지 않아!

 

이때 사용하는 것이 바로 함수이다.

#code
def greet() :
    print("Hola!")
    print("Mucho gusto")
    print("Como estas?")
    
greet()

#shake hands

greet()

#dance with stranger

greet()

#hug

greet()

#sing some punk rock songs

 

함수가 한결 보기 편해졌다!

def(define function? 자세히는 기억이 안 난다.)는 함수를 정의한다.

def 아래의 코드블럭에 반복할 내용을 적고 옆에는 내가 만들 함수의 이름을 적는다.

 

그 다음에 내가 만든 함수의 이름을 적으면? (함수를 부른다고 한다.) 내가 저장해놓은 함수가 그대로 출력된다.

 

그렇다면 for문을 사용할 상황과 function을 사용할 상황을 어떻게 구분하면 좋을까?

 

 

for문 - 한 내용이 특정 횟수만큼 반복되며, 시행마다 바뀌는 부분을 리스트나 숫자로 지정하고 싶을 때.

function - 한 내용이 코드 이곳 저곳에 분포되어 있을 때. 시행마다 바뀌는 부분을 상황에 맞춰 내가 지정하고 싶을 때 (이것은 섹션 8에서 매개변수와 인자를 다룰 때 배울 수 있다.)

 

이게 어렵다면 보고 이해하기 쉬워질만한 코드로 작성하면 된다.

for문을 사용하는 것이 더 이해하기 쉽고 자연스럽다면 for문을, functino이 더 좋다면 function을 사용하면 된다.

주석이 왜 있다고 생각하는가? 코드는 다른 사람이 읽기 좋아야한다.

 

사실 function이나 for문이 없더라도 코드는 쓸 수 있다. 코드를 간략히, 이해하기 쉽게 만들어주므로 이것들의 도움을 받는 것뿐이다.

내가 왜 이 기능을 사용하고 있지? 에 초첨을 맞추길 바란다.

 

 

while문은 특정 조건을 만족시킬 때에만 계속되는 반복문이다.

for문은 일정한 리스트 속 요소를 모두 거치면 종료되지만, while문은 특정 조건을 만족시키지 못한다면 영원히 지속될 수도 있다. (보통은 잘못 만든 코드가 그렇다.)

#code
while (조건) :
	(반복될 내용)

 

의 기본 구조를 지니는데, 이때 조건을 5 > 3과 같은, 항상 True인 조건으로 하면 그런 에러가 날 수 있다.

 

while문의 올바른(사실 잘 쓴다고 하기에는 애매하지만) 활용 예시는 이런 것이다.

#code
a = int(input("자연수를 입력하세요."))
sum = 0

while a > 0 :
    sum += a
    a -= 1
    
print (sum)

 

for문으로 흔히 만들 수 있는 1부터 n까지의 합을 출력하는 코드지만, 이렇게 while 문으로도 만들 수 있다.

 

만약 for문이나 while문같은 반복문을 즉시 탈출하고 싶다면, break이라는 함수를 사용할 수 있다.

예를 들어 while문을 하는데 너무 많이 반복되면 오류라고 생각하고 함수를 부수고 싶다! 할 경우에는

#code
count = 1
a = 1
while a % 7 == 0 :
    a += a + 1
    if count > 10 :
    	break
    else :
    	count += 1

 

이런식으로, count라는 변수와 break 함수를 이용해 코드를 작성할 수 있다.

for문은 while문의 부분집합 같은 느낌이라, for문으로 구현할 수 있는 것은 대부분 while문으로 구현할 수 있다. (대신 for문으로 구현하면 보기 쉬운 것들이 있기에 특정 횟수만큼, 혹은 특정 리스트에 있는 요소에 대해 반복하는 구문은 for문을 주로 사용하게 된다.)

이 점에 유의하여 반복문을 다루도록 하자.

 

 

예제를 풀던 중 강의를 봐도 모르겠는 문제가 있다면 댓글에 섹션과 무슨 문제인지 적어주길 바란다. 아주 빠르진 않겠지만 적당히 빠른 시일 내에 해당 내용에 대한 풀이를 추가하겠다.

 

이번 내용은 섹션 내용은 많지 않으니 여기서 끝을 내려고 한다. 내일이면 주말인데 다들 너무 일만 하지 말고 코딩도 하면서 쉬엄쉬엄 살았으면 한다.

 

+ 241027 // while문에 대한 내용을 적지 않아 추가하였다.