안녕하세요 코드웍스입니다.
이번 시간에는 프로그래밍 언어를 배울때 제일 핵심적이라고 할 수 있는 반복문 for문을 배워보도록 하겠습니다. 😎

1. 반복문이란?
프로그래밍에서 반복문은 주어진 작업을 여러 번 수행할 때 사용되는 도구입니다.
파이썬에서는 두가지 타입의 반복문을 제공합니다.for문과 while문인데, 두 문법 모두 반복적인 작업을 처리하는 데 사용되지만, 동작 방식과 사용 목적이 조금 다릅니다.
- while문
- 조건이 참(True)일 동안 반복 작업을 수행합니다.
- 조건이 더 이상 만족하지 않으면 반복이 종료됩니다.
- 따라서, 조건에 따라 반복 횟수가 유동적일 수 있습니다.
- for문
- 시퀀스(리스트, 튜플, 문자열 등) 또는 범위를 순회하면서 요소마다 동일한 작업을 수행할 때 사용됩니다.
- 시퀀스의 길이에 따라 반복 횟수가 결정됩니다.
while과 for문 중, 이번 시간에 우리는 for문을 집중해서 알아보도록 하겠습니다.
2. 기본 for문
for 변수 in 시퀀스:
반복할 코드
여기서 변수는 시퀀스(리스트, 튜플, 문자열 등)의 각 요소를 차례대로 받는 변수이며, 시퀀스는 반복할 데이터를 포함하는 객체입니다. 변수와 객체에 대한 설명은 이전 글을 참고하시길 바랍니다([파이썬 기초] 자료형과 연산 - int, float, bool, str)
코드웍스에서는 5번 반복문 블록> 첫번째 블록에서 for문을 제공합니다.
이 블록을 사용할때, 33번블록을 제거하고, 그 안에 직접 리스트, 문자열, 튜플 등 시퀀스를 넣어서 for문을 작성할 수 있습니다. 이제 for문의 사용법에 대하여 자세히 알아보겠습니다. 🤓
3. for in range
파이썬에서는 range라는 내장함수를 통해, 숫자 범위를 생성할 수 있습니다. 이 함수는 주로 for문과 함께 사용되어, 반복을 수행할 때 매우 유용합니다. range의 활용에 따른 for문의 종류를 설명해드리겠습니다.
3.1 range(N)
- range() 함수에 양수 N을 넣으면, 파이썬은 0부터 시작해서 N-1까지의 숫자들을 생성합니다.
그렇다면, 아래에 주어진 코드는 Hello world를 몇번 반복하는 코드일까요?
for i in range(10):
print("Hello world")
아래 접은글에 정답이 있습니다.
정답 :10번
이유: 10이기 떄문에 0부터 9까지의 숫자를 생성하므로
코드웍스 코드에서는 기본적으로 제공되는 for문 블록을 가지고와서 활용하면 됩니다.
본 실습에서는 range가 어떤 숫자들을 포함하는지를 출력해보겠습니다.
N을 10으로 설정하고, range를 도는 변수 i를 출력하기위해 print(i)를 해줍니다.
어떤 결과가 나왔나요?
0부터 9까지의 숫자가 출력된 것을 확인하실 수 있습니다. 이로써 range에 양의 정수 하나만이 주어진다면, 0부터 (양의 정수 -1)까지의 숫자를 순회하는 것을 아실 수 있습니다. 그렇다면, 만약에 3부터 시작해서 10까지를 출력하고싶으면 어떻게 해야할까요? 그럴땐 범위를 정해주는 방법이 있습니다
3.2 range(N,M)
- range() 함수는 N부터 시작하여 M-1까지의 숫자들을 생성합니다.
- 즉, 시작 값과 끝 값을 모두 지정할 수 있는 방식입니다.
- 예를 들면, range(1,5)는 1,2,3,4를 순회하게 됩니다.
그렇다면 아래 코드의 결과는 어떻게 될까요?
#3부터 10까지의 숫자 순회
for i in range(3,11):
print(i) #순회하는 숫자 출력
코드웍스에서 실습을 해보시면, 아래와 같이 3에서 10까지 출력된 것을 확인하실 수 있습니다. 범위를 정할때, M까지 출력된다고 착각해서 실수하는 경우가 많으니 주의해주세요! 🤔
그렇다면 2씩 증가시키거나 3만큼 감소시키면서 숫자를 출력시키고 싶으면 어떻게 해야할까요?
이제 숫자의 증가하거나 감소하는 정도를 정해줄 수 있는 방법을 알려드리겠습니다.
3.2.1 범위 증가- range(N,M,K)
- range() 함수에 세 번째 매개변수 K를 추가하면, 반복 시 숫자가 K만큼씩 증가하게 설정할 수 있습니다.
예를 들어, 아래코드 range(1, 10, 2)는 1부터 시작하여 2씩 증가하는 숫자들을 생성합니다.
for i in range(1,10,2):
print(i)
위의 코드를 코드웍스로 작성해서 실행시켜 보겠습니다. 33번 블록 range부분에 1, 10, 2를 입력하시고 실행해보시면 1부터9까지의 양의 정수에서 2씩 증가한 숫자만 출력 된 것을 확인하실 수 있습니다.
3.2.2 범위 감소- range(N,M,-K)
숫자를 감소시키고 싶다면, 세 번째 매개변수를 음수로 설정해야 합니다. 감소시키는 것이기 때문에 N은 큰 수, M은 작은 수로 설정해야만 정상적으로 작동합니다.
예를 들어, range(10, 1, -3)는 10부터 시작해 2씩 감소하는 숫자들을 생성합니다.
아래 코드를 실행시키면 어떤 결과가 나올까요?
for i in range(10,1,-2):
print(i)
정답은 접은글에 있습니다.
정답:
10
8
6
4
2
이유: 10에서 1까지의 숫자를 순회하는데, 2만큼씩 감소하도록 하였으므로.
이번엔 코드웍스로 실습을 해볼건데, 20에서 1까지 5씩 줄어드는 숫자를 출력하고싶다면 어떻게 해야할까요?
아래와 같이 range(20,1,-5)로 설정을 하시면 됩니다. 출력 결과를 보시면 20,15,10,5로 5씩 감소를 잘 한 것을 확인하실 수 있습니다.
감소하는 range를 구현하실땐, 숫자가 감소하기 때문에 N이 M보다 커야 한다는 것입니다. 만약 N이 작은 수라면 결과가 출력되지 않거나 의도와 다른 결과가 나올 수 있습니다.
이제 단순한 숫자를 순회하는 것 뿐 아니라 리스트와 문자열과 같은 다른 종류의 시퀀스를 순회하는 for문을 소개해드리겠습니다. 😎
4. for in list - 리스트 순회
- 파이썬에서 for문은 단순히 숫자 범위만을 순회하는 것이 아닙니다.
- 리스트와 같은 여러 값들을 담고 있는 데이터 구조(시퀀스 데이터)도 순회할 수 있습니다.
- 리스트에 있는 요소들을 하나씩 꺼내와 반복적으로 처리할 때 매우 유용합니다.
- 파이썬은 리스트에 접근할때, 요소를 직접 순회하는 방법과 인덱스로 접근하는 방법을 제공합니다.
4.1 기본적인 리스트 순회
- 가장 간단하고 읽기 쉽습니다
- 요소 값만 필요할 때 적합합니다
리스트의 요소에 직접 접근해서 순회하는 코드의 기본 골격은 아래와 같습니다. i는 리스트의 각 요소를 순회하게 되며, 각 요소를 돌때마다 요소를 출력하도록 하는 코드입니다.
for i in 리스트:
print(i)
이제 실제 코드로 실습을 해보겠습니다.
에스파 멤버들의 이름을 담고 있는 리스트를 출력해보도록 하겠습니다.
아래 코드와 같이 에스파 멤버들의 이름을 담은 리스트를 선언한 후, 에스파 멤버들의 이름을 하나씩 출력해보겠습니다.
#에스파 멤버들의 이름을 담은 리스트 선언
asepa = ["Karina", "Winter", "NingNing", "Giselle"]
#asepa리스트에 있는 요소들 순회
for i in asepa:
print(i) #순회한 값을 출력
코드웍스 블럭 파이썬 코드는 아래와 같습니다. asepa리스트에 있는 에스파 멤버들의 이름이 하나씩 잘 출력된 것을 확인하실 수 있습니다.
4.2 리스트 index 순회
- index를 이용해서 list를 순회하는 방법은 두가지가 있습니다
- range(len(list)) : 리스트의 길이를 이용하여 index에 접근
- enumerate(): 리스트의 요소와 index에 접근
- 위의 방법들은 인덱스를 통한 직접 접근이 가능합니다
- 여러 리스트를 동시에 순회할 때 유용합니다
- 리스트 요소를 수정할 때 편리합니다.
이제 for문에서 리스트의 index를 활용해서 리스트의 요소에 접근하는 방법을 알아보도록 하겠습니다. 🤔
4.2.1 range 이용 index순회
- 인덱스를 통한 직접 접근이 필요할 때 사용됩니다.
- 여러 리스트를 동시에 순회할 때 사용됩니다
- 리스트 요소를 수정해야 할 때 사용됩니다.
리스트의 길이는 len() 내장함수를 활용되며, range(len(리스트))를 하게되면, 리스트의 길이만큼 순회하게 되면서, index를 통해 리스트의 요소에 접근이 가능하게 됩니다.
range(N)은 0부터 N-1까지의 숫자를 순회합니다. 리스트의 첫번째 index도 0부터 시작하기때문에, i를 활용해서 리스트의 i index에 어떤 요소가 있는지 접근이 가능하게 되는 겁니다.
기본적인 골격은 아래와 같습니다.
#리스트의 길이만큼 순회(리스트의 길이가 N이라면 0부터 N-1까지를 순회)
for i in range(len(리스트)):
print(리스트[i]) #i번째 index의 리스트 요소
이제 직접 실습을 통하여 에스파 멤버를 담고있는 리스트의 요소들을 index를 통해 접근하여 출력해보겠습니다.
위에서 했던 실습처럼 asepa멤버를 담고있는 리스트를 선언한 후, len을 이용하여 리스트의 총 길이를 구한 후, range를 통해 index를 순회합니다.
for i in range(len(asepa)):
print(asepa[i])
코드웍스 코드는 아래와 같습니다. range나 len 내장함수 모두 33번 블록에서 선택할 수 있으므로 오른쪽 마우스 클릭> 복제를 클릭해서 이용하시면 됩니다.
코드의 실행 결과를 보시면 직접 순회한 것과 별다르지 않게 잘 출력된 것을 확인하실 수 있습니다.
근데 코드가 좀 복잡한거같지 않나요? 인덱스와 요소 모드를 활용하는 코드를 작성하고 싶다면 파이썬에서 제공하는 enumerate함수를 활용하면 됩니다. 😎
이제 enumerate함수를 활용해서 리스트를 순회하는 방법을 설명드리겠습니다.
4.2.2 enumerate 이용 index순회
enumerate 함수의 특징은
- 인덱스와 값이 모두 필요할 때 사용합니다.
- 코드가 더 간결하고 파이썬스러운 코드를 작성 할 수 있습니다.
- 인덱스 계산 실수를 방지합니다
- 메모리 효율적 (이터레이터 사용)으로 사용할 수 있습니다.
기본적인 골격은 아래와 같이 활용 가능합니다.
for 인덱스, 요소 in enumerate(리스트):
print(f"{인덱스}의 요소: {요소}")
enumerate(리스트)는 리스트의 인덱스와 요소를 순회하는 함수입니다. 위에서 설명한 range(len(리스트))로 접근하는 방법보다 훨씬 가독성이 좋고, 실수를 방지 할 수 있고, 파이썬스러운 함수이므로, for문으로 리스트의 인덱스와 요소에 함께 접근해야한다면 이용하기를 추천합니다. 😎
이제 직접 에스파 멤버들의 이름을 for문으로 돌면서 몇번째 멤버인지까지 출력시켜보겠습니다.
코드웍스 코드로 실습해보겠습니다. 아래 접은글에 코드 블럭들을 어떻게 가져다 놔야하는지 설명을 자세히 써놨으니 참고하세요!
1. 33번 블록 > 순서열거(enumerate)선택

2. 괄호 부분에 asepa입력(혹은 asepa복제 클릭 후 끌어다놓기)

3. a 변수를 만듭니다.

4. i와 a를 쉼표로 이어지는 블록을 끌어다가 i를 지우고 넣습니다


5. f-string으로 출력하기 (이전 게시물 [파이썬 기초] 출력 print 참고하세요!)


파이썬 텍스트 코드는 아래와 같습니다.
#에스파 멤버들의 이름을 담은 리스트 선언
asepa = ["Karina", "Winter", "NingNing", "Giselle"]
for idx,a in enumerate(asepa):
print(f"에스파의 {idx+1}째 멤버: {a}")
#print(f"에스파의 {idx+1}멤버: {asepa[idx]}") 직접 index로 접근도 가능
for 문을 활용해서 리스트를 순회하다보면, 2번째 index 시작하고 싶을때도 있고, N번째 index부터 시작하고 싶을때도 있게됩니다. 이럴때는 enumerate의 start를 활용해주면 됩니다.
시작 인덱스 설정- start
enumerate()내장함수에 start를 설정하면 시작하고싶은 index를 설정할 수 있게 됩니다.
그렇다면 아래 코드의 결과는 어떻게 될까요? 🤔
for idx,a in enumerate(asepa, start=1):
print(f"에스파의 {idx+1}번째 멤버: {a}")
정답은 아래 접은글에 있습니다. (만약 f-string 출력 방법을 잘 모르시겠다면,[파이썬 기초] 출력 print을 참고하세요!)
정답:
에스파 2번째 멤버: Karina
에스파 3번째 멤버: Winter
에스파 4번째 멤버: NingNing
에스파 5번째 멤버: Giselle

다른 예시를 들어보겠습니다. 아래 코드의 결과값은 어떻게 될까요?
t1_players = ["Zeus", "Oner", "Faker", "Gumayusi", "Keria"]
for i, a in enumerate(t1_players, start=3):
print(f"티원 선수 {i}: {a}")
아래는 코드웍스 코드로 위의 코드를 써봤습니다.
start를 3으로 설정했기 때문에, index가 3부터 시작하고, 요소들은 그대로 순회하여 출력되는걸 확인하실 수 있습니다.
5. for in string - 문자열 순회
파이썬에서 for문은 단순히 숫자 범위만을 순회하는 것이 아니라 문자열과 같은 시퀀스 데이터도 순회할 수 있으며, 이는 텍스트 처리에 매우 유용합니다.
- 문자열은 문자들의 시퀀스(연속된 데이터)입니다.
- 문자열이 무엇인지 모르시는분은 [파이썬 기초] 자료형과 연산 - 숫자형, 부울형, 문자열을 참고하세요
- 각 문자에 순서대로 접근할 수 있습니다.
- 문자열의 각 문자는 인덱스를 가지고 있습니다.
5.1 문자열 직접 순회하기
- 코드가 간결하고 읽기 쉽습니다.
- 인덱스 관리가 필요 없습니다.
- 실수할 가능성이 적습니다.
기본적인 순회구조는 아래와 같습니다. 문자열에 포함된 문자들 하나하나를 연속된 데이터로 취급하고, 문자열 전체를 리스트와 같게 순회하게 됩니다.
for s in 문자열:
print(s)
이번에 그룹 에스파가 컴백하는데요🤭 , "에스파 컴백합니다"라는 문자열을 for문으로 직접 순회해서 하나씩 출력해보겠습니다.

아래는 파이썬 텍스트 코드입니다.
for i in "에스파 컴백합니다":
print(i)
이제 코드웍스로 작성해서 실행해보겠습니다. 한글자씩 순회해서 출력한 것을 확인하실 수 있습니다.
5.2 range(len(문자열))
- 문자의 위치 정보가 필요할 때 유용합니다.
- 특정 위치의 문자를 참조할 수 있습니다.
- 다른 문자열과 위치를 비교할 때 활용할 수 있습니다.
리스트에서 설명한 것과 다르지않고 비슷하다고 생각하시면 됩니다. 문자열을 캐릭터 하나하나의 시퀀스로 취급, 문자열의 길이 또한 len() 내장함수를 사용합니다. 그렇다면 아래 코드의 결과는 어떻게 나올까요?
message = "에스파 컴백합니다"
for i in range(len(message)):
print(f"{i}의 문자 {message[i]}")
코드웍스로 코드 작성 후 실행시켜봤습니다. 빈칸도 하나의 문자열로 취급해서 순회를 통해 출력 되는 것을 확인하실 수 있습니다.
5.3 enumerate
- 직접 순회와 인덱스 접근의 장점을 모두 가집니다.
- 코드가 깔끔하고 가독성이 좋습니다.
- 인덱스와 문자를 동시에 사용할 수 있습니다.
아래는 실습 코드인데요, 출력하면 어떤 결과가 나올까요?
message = "에스파 컴백합니다"
for i, a in enumerate(message):
print(f"{i}번째 문자: {a}")
코드웍스 코드로 작성해보았습니다. 5.2의 예시와 똑같이 출력되지만, 코드 자체는 훨씬 간결하고 가독성이 좋아진 것을 확인하실 수 있습니다.
이번 포스트에서는 파이썬의 가장 핵심적인 문법 중 하나인 for문에 대해 자세히 알아보았습니다. 처음 프로그래밍을 배우시는 분들에게는 반복문이 다소 어렵게 느껴질 수 있는 개념일 텐데요, 오늘 다룬 내용들을 차근차근 학습하시면 앞으로의 코딩 공부에 탄탄한 기초가 될 것입니다. 긴 글 끝까지 읽어주셔서 감사합니다.
왼쪽 프로필바쪽에 카카오톡 오픈카톡 링크를 배치해놨습니다. 궁금한 내용이나 코드웍스 이용관련 문의는 오픈채팅을 주시거나 댓글을 남겨주시 친절히 답변해드리겠습니다. 🤓
본 포스트가 유익하셨다면 구독과 좋아요 부탁드립니다! 🥰
'🦎파이썬 > 🧱 파이썬 기초 블록코딩' 카테고리의 다른 글
[파이썬 기초] 집합 set (2) | 2024.11.10 |
---|---|
[파이썬 기초] 딕셔너리 dictionary (9) | 2024.10.26 |
[파이썬 기초] 리스트 List (5) | 2024.10.16 |
[파이썬 기초] 자료형과 연산 - 숫자형, 부울형, 문자열 (8) | 2024.10.06 |
[파이썬 기초] 조건문 if (11) | 2024.09.22 |
[파이썬 기초] 출력 print (2) | 2024.09.12 |