본문 바로가기
[PY4E] Boostcourse 2022 코칭스터디

[PY4E - 모두를 위한 파이썬(3-1)] while문, for문

by 개복치96 2022. 10. 3.
반응형

Python for Everybody - Boostcourse

원하는 누구나 들을 수 있는 파이썬 강의

https://www.boostcourse.org

 

다 함께 배우고 성장하는 부스트코스

부스트코스(boostcourse)는 모두 함께 배우고 성장하는 비영리 SW 온라인 플랫폼입니다.

www.boostcourse.org

3주차 학습 범위는 루프와 반복문이다.

 

 

반복문은 while, for 문이 있다.

예시만 보면 아주 간단해 보이지만 반복문은 매우 다양한 활용이 가능하다. 특히 파이썬에서는 더더욱.

반복문에서 몇번 반복할 것인지에 대한 조건을 다양하게 걸 수 있다.
어떤 단어의 글자 수 만큼 반복을 한다던지, 내가 원하는 숫자의 범위만큼 반복을 한다던지,
문자를 아스키코드로 변환했을때의 숫자만큼 반복을 한다던지,
while문으로 내가 원하는 문자가 배열에 있는한 반복한다던지,
등등 아주 다양하게 활용할 수 있다.
이 반복문이 중첩으로 활용이되고, 반복문 안에 조건문이 들어가고, 배열이 적용이되고,
함수로 선언이 되며 점점 복잡한 구조가 만들어진다.

배열 등은 표현에 가깝다면, 반복과 조건은 논리이니, 그만큼 그 사용을 더욱 중요하게 파악해야한다.

1. while

먼저 while 루프에 대해 알아보자.
while은 직역하면 '~하는 동안'이라는 뜻이다. 굳이 좀 더 붙이자면 '~하는 동안 내내'로 파이썬에서는 사용된다.
Would you look after the children while I do the shopping?
👉 내가 쇼핑하는 동안 아이들을 돌봐줄 수 있을까?

이런 영어 실사용과 다르지 않다. 그대로이다.
위 예문이 쇼핑하는 '동안' '아이들을' '돌본다' 로 구성이 되어있다.
'동안'이 while이고 '돌본다'가 실행문이고 '아이들을' 이 적용되는 변수이다.

n = 5

while n > 0:
    print(n)
    n = n - 1

print('Blastoff!')
print(n)

위 예시에서 while이 '동안' n > 0 이 쇼핑
print가 '돌본다' n이 '아이들'에 해당된다고 할 수 있겠다.

즉, 위의 예시는 아래와 같다.

n의 값이 5보다 큰 동안
출력한다, 뭐를? n을.
그리고 n에 n-1을 실행한 값을 집어넣는다.

이를 순서도로 표현하면 아래와 같다.

그리고 while 문과 함께 쓰이는 것은 break문과 continue문이 있다.
break문은 그 시점에서 while루프에서 break 즉, while루프를 깨고 나온다는 뜻이고,
continue문은 계속한다, 즉, while루프의 시작으로 돌아가 시행한다.

위 두 break문과 continue문은 두개 모두 다 while문의 조건이 TRUE일 경우에 주로 쓰인다.

while문의 조건이 true이면 '무한'반복한다. 조건이 '참'이기 때문에.

while True:
    line = input('> ')
    if line[0] == '#' :
        continue
    if line == 'done' :
        break
    print(line)
print('Done!')

# > hello there 입력
# hello there로 출력
# # don't print this '#'을 입력하게 되면 continue를 만나게 되고
# continue는 loop의 시작점으로 다시 돌아가서 loop를 실행하게 됩니다.
# > print this! 입력
# print this!로 출력
# > done 입력
# Done!으로 출력 done을 입력하게 되면 break를 만나게 되고
# break는 loop끝나는 점 바로 다음에 오는 코드를 실행하게 됩니다.

 

2. for

두번째는 for문이다.

앞서 언급한 것 처럼 for 문은 가장 많이 사용되는 반복문이다.
반복문을 많이 사용하는 것 또한 좋지 않은 것이라고는 하지만,,
어찌되었건 가장 많이, 또 유용하게 쓰이는 반복문이다.

앞서 while문이 무한 루프가 가능했다면 for 문은 유한루프이다.
유한이지만 오히려 유한이기때문에 표현 방밥이 다양하고, 파이썬이기때문에 더욱 다양하다.

for i in [5,4,3,2,1] :
    print(i)
print('Blastoff!')

# 5
# 4
# 3
# 2
# 1
# Blastoff!

위 예시는 리스트로 반복을 선언한 것이다.
i가 배열 [5,4,3,2,1] 안에 있을때 i 를 출력하라는 뜻이며, 따라서 리스트에 들어있는 원소들이 하나씩 출력된다.
'1'까지 출력되고 다면 더이상 출력이 되지 않으므로 'Blastoff!'가 출력된다.

지금은 In 다음에 바로 리스트를 직접사용하였으나, 예를 들어 아래와 같이 표현해도 같은 결과값을 얻을 수 있다.

a = [5, 4, 3, 2, 1]
for i in a :
    print(i)
print('Blastoff!')

# 5
# 4
# 3
# 2
# 1
# Blastoff!

또 비슷해보이지만 길이를 구하는 라이브러리를 사용하면 아래와 같이 결과를 바꿀 수 있다.

a = [5, 4, 3, 2, 1]
for i in range(len(a)) :
    print(i)
print('Blastoff!')
# 0
# 1
# 2
# 3
# 4
# Blastoff!

지금 위의 예시는 range함수를 사용하였다. 자료형을 맞춰주기 위해서는 range 함수를 사용하여야 한다.
range 함수는 보통 for 문와 같이 사용되며, 사용법은 아주 간단하다.
[range(시작, 끝, 간격]
가령 range(1, 10, 10) 이라고하면 1부터 3씩 간격을 가지고 10까지 라는 뜻이된다.
이를 for문에 적용하면 다음과 같다.

for i in range(1, 10, 3) :
    print(i)
print('Blastoff!')
# 1
# 4
# 7
# Blastoff!

문자열 리스트도 동일한 방식으로 표현이 가능하다.

friends = ['Connect', 'Korea', 'NHN']
for friend in friends:
    print('Happy New Year!! ', friend)
print('Done!')
# Happy New Year!!  Connect
# Happy New Year!!  Korea
# Happy New Year!!  NHN
# Done!

 

지금까지 while문과 for문에 대해 아주 간단하게 알아보았다.
응용이 굉장히 많아 다 다룰 수는 없다.
다만, 경험해본 결과 생각하는 대부분을 적용할 수 있으니,
문법도 좋지만 되도록 알고리즘을 먼저 떠올리는 훈련을 하기를 바란다.
알고리즘만 세워진다면 표현하는 것은 느리더라도 검색을 통해 가능하다..

다음 포스팅은 2주차 미션과 그 피드백에 대해 다루도록 하겠다.

💡본 포스팅 예시의 출처는 본인이 직접한 코딩과 부스트코스 내 강의에 있다.
반응형