프로그래밍 언어/파이썬

파이썬 19. 반복문-for문

닉네임못짓는사람 2020. 10. 29. 18:16
반응형

이번 글에서부터는 반복문에 대해서 알아보도록 하겠습니다.

 

반복문


반복문이란 말 그대로 특정한 코드를 반복해서 수행하는 것을 의미합니다.

예를 들어 num이라는 변수에 1을 50번 더하는 작업을 수행해야 한다고 생각해봅시다.

이럴 때는 코드를 어떻게 작성하면 될까요?

num = 0
num += 1
num += 1
num += 1
num += 1
num += 1
.
.
.

먼저, 위와 같이 num에 1을 더하는 코드를 50번 작성하면 일단 해결이 가능할 것입니다.

하지만 이러한 작업은 매우 비효율적이고 공간도 많이 차지합니다.

또한 만약에 1을 50번 더하는 것이 아니라 만번, 천만번 더해야 한다면 이렇게는 할 수 없을 것입니다.

따라서 이러한 작업을 더 편하게 수행할 수 있도록 반복문을 사용합니다.

 

파이썬에서 사용하는 반복문은 for문과 while문 두 가지가 있는데, 이번 글에서는 먼저 for문에 대해서 알아봅시다.

for문


일단 for문의 기본 구조는 다음과 같습니다.

for i in 리스트,튜플,문자열 등:
    수행 코드1
    수행 코드2
    .
    .
    .
    

차근차근 구조를 알아봅시다.

가장 먼저 예약어인 for를 적어준 뒤 반복문에서 사용할 제어변수를 적어줍니다.

이 제어변수는 보통 i, j, k순서로 이름을 지정해서 사용합니다.

 

이후에 in 리스트, 튜플, 문자열 등의 자료형 변수를 지정할 수 있는데 코드를 통해서 어떻게 동작하는지 알아봅시다.

list1 = [1, 2, 3, 4, 5, 6]
for i in list1:
    print(i)

이렇게 in 리스트와 같이 사용하게 되면, 리스트의 모든 요소를 하나씩 i에 대입하면서 실행 코드의 작업을 수행합니다.

위의 코드에서 리스트의 내용은 1, 2, 3, 4, 5, 6인데, 이 모든 요소들에 하나하나 접근할 때까지 코드를 계속해서 수행합니다.

 

그런데 이렇게 사용하면 위에서 말한 단순히 1만 더하는 작업을 수행하기에는 조금 힘들어 보입니다.

때문에 for문과 자주 사용하는 range함수에 대해서 알아봅시다.

for문과 range함수


range함수는 숫자 리스트를 자동으로 만들어 주는 함수인데, 코드로 확인해봅시다.

print(range(10))
for i in range(10):
    print(i)

range를 사용해서 위와 같은 결과가 나왔는데, range객체만을 출력하면 0과 10만 포함하고 있는 객체로 보이지만

실제로 for문으로 출력을 해보면 0이상, 10미만의 숫자들을 포함하고 있는 객체란 걸 알 수 있습니다.

위의 코드는 내부적으로 다음의 코드와 동일합니다.

list1 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
for i in list1:
    print(i)

 

또한 range함수는 0부터 시작하는 것뿐만 아니라, 시작할 숫자, 숫자를 몇 씩 증가시킬 것인지도 지정할 수 있습니다.

for i in range(1, 10, 2):
    print(i)

위와 같이 사용하면 1에서부터 숫자를 2씩 증가시켜서 10미만까지 추가시키는 객체를 생성합니다.

여기서 시작 숫자와 증가값은 생략할 수 있으며, 생략 시 시작 숫자는 0, 증가값은 1이 됩니다.

이렇게 range와 for문을 함께 사용해서 자신이 원하는 횟수만큼 반복문을 수행시킬 수 있습니다.

 

다음으로 이외에 for문을 사용하는 방법에 대해서 더 알아보도록 합시다.

for문과 다중 리스트


for문을 사용할 때 제어변수를 두 개 이상 사용할 수도 있습니다.

예를 들어 다음의 코드를 봅시다.

list1 = [[1, 2], [3, 4], [5, 6]]
for i, j in list1:
    print(i, j)

이렇게 다중 리스트를 사용해서 제어변수 i와 j에 한 번에 리스트 내용을 대입하여 사용할 수도 있습니다.

이 방법은 리스트뿐만 아니라 다중 튜플, 리스트 내의 튜플 등에도 사용 가능합니다.

중첩 for문


다음은 중첩 for문에 대해서 알아봅시다.

if문에서 중첩 if문이 있었던 것처럼 for문도 중첩해서 사용할 수 있습니다.

사용법은 if문처럼 바깥쪽 for문의 실행코드에 다시 for문을 적어주시면 됩니다.

이 중첩 for문을 사용해서 구구단을 만들어보도록 합시다.

for i in range(2, 10):
    for j in range(2, 10):
        print("%d * %d = %2d" %(j, i, i*j), end = '|')
    print()

이렇게 중첩 for문과 문자열 포매팅을 사용해서 구구단을 출력했습니다.

그런데 여기서 end = '|'라는 부분이 눈에 띄시는 분이 있을텐데요.

본래 print함수를 사용하면 마지막에 자동적으로 개행문자(\n)이 추가되기 때문에 자동으로 줄바꿈이 됩니다.

 

이때 매개변수 end를 추가하게 되면 print의 마지막 문자를 개행문자(\n)이 아닌 다른 문자로 변경하는 것이 가능합니다.

위의 코드에서는 구구단 출력을 좀 더 보기 좋게 하기 위해서 마지막 문자를 '|'로 변경했습니다.

 

이번 글은 이 정도로 마치도록 하겠습니다.

감사합니다.

 

 

반응형

'프로그래밍 언어 > 파이썬' 카테고리의 다른 글

파이썬 21. 함수-1  (0) 2020.11.03
파이썬 20. 반복문-while문  (0) 2020.11.02
파이썬 18. if문-2  (0) 2020.10.27
파이썬 17. if문-1  (0) 2020.10.08
파이썬 16. set관련 함수  (0) 2020.10.07