이번에는 for문에 대해서 알아보겠습니다.
for문은 특정 범위를 반복할 때 유용하게 사용됩니다.
예를 들어 1에서 100까지의 합을 구할 때, 30명 학생들의 등급을 분류할 때 등등 정해진 범위에서 사용하기 아주 유용한 반복문입니다.
반복문을 사용하는 이유는 반복적인 코드를 단순화하여 코드의 길이를 줄이고 가독성을 높이는 역할을 합니다.
만약 리스트 자료형에 들어있는 성적 데이터를 60점 이상은 합격이라고 결과를 도출하고 싶을 때 반복문을 사용하지 않는다면 어떻게 될까요? 직접 경험해보겠습니다.
합격 불합격을 구분하기 위하여 if ~ else을 총 6개 적어야 합니다. 복붙을 이용하면 6개정도는 일도 아니지만 30명, 100명이라면 힘들 것 입니다. 때문에 반복문이 필요합니다.
구조를 보고 설명은 아래에서 하겠습니다.
for 변수 in 범위:
반복할 코드
그렇다면 for 반복문의 사용 방법을 알아보겠습니다.
첫 번째 range 함수를 사용하여 범위를 지정하는 방법입니다.
이 문법을 통해서 for문의 기본 구조에 대해서 설명드리겠습니다. for는 for반복문임을 명시하는 것입니다. i는 반복문에서 사용할 변수 i입니다. in은 범위에 해당하는 데이터가 순차적으로 반복문에서 사용할 변수 i에 들어간다는 말입니다. range(5)는 0~4까지라는 뜻과 5번 반복이라는 뜻 두 가지를 내포하고 있습니다.
즉, 현재 반복문은 총 5번 반복하는 코드이며 i에 들어가는 데이터는 0에서 4까지 순차적으로 들어가서 print(i)구문을 만나 출력하게 되는 반복문입니다.
range 안의 들어가는 숫자를 변경하면 반복의 횟수와 숫자의 범위가 달라지게 됩니다.
그렇다면 정확하게 어떻게 동작이 되는지 실행 순서를 확실히 알아보겠습니다.
for i in range(5): == ⓐ
print(i) == ⓑ
1. 반복의 범위는 0~4이며 i에 들어가는 데이터는 0이 먼저 들어간다.
2. ⓑ로 내려와서 현재 i 변수에 들어있는 값을 출력하고 다음 코드로 내려간다. 내려갈 코드가 없으니 다시 ⓐ로 간다.
3. 0 다음으로 i에 1이 들어간다.
4. ⓑ로 내려와서 현재 i 변수에 들어있는 값을 출력하고 다음 코드로 내려간다. 내려갈 코드가 없으니 다시 ⓐ로 간다.
..
..
이 과정을 i에 4가 들어갈 때까지 반복하는 것입니다.
이때 시작 숫자는 무조건 0으로 고정이 되는데 시작 숫자를 변하게 하고 싶으면 다음과 같이 하면 됩니다.
5-1을 해서 반복은 4번 나오게 되었습니다. 5번 반복하고 싶으면 range(1, 6)을 하면 됩니다. i에 들어가는 데이터의 범위는 1~4까지 들어가서 print함수를 만나 출력하게 되었습니다.
다음은 일정한 간격을 두고 범위를 지정해보겠습니다.
옵션을 하나 더 추가하면 간격을 지정할 수 있는데 해당 문법을 글로 설명하면 i에 들어가는 데이터는 1부터 9까지 범위에서 1부터 간격이 2인 숫자들이 들어가게 되어 print함수를 만나 출력하게 됩니다.
이번에는 범위자리에 리스트를 넣어보겠습니다.
반복의 첫 번째는 i 변수에 리스트의 가장 첫 번째가 들어가게 됩니다. 83이 가장 나중에 들어가게 됩니다. 즉 리스트의 원소가 6개이므로 6번 반복하게 됩니다.
이번에는 범위 자리에 문자열을 넣어보겠습니다.
리스트와 비슷하게 문자열의 가장 첫 번째 문자가 반복문의 첫 번째로 들어가고 마지막은 문자열의 가장 마지막 문자열이 들어가게 됩니다.
반복문은 기본적으로 반복할 코드가 무엇인지 범위는 어떻게 설정을 할 것인지 결정하는 것이 가장 중요합니다. 맨 위의 코드를 보면서 반복할 코드와 범위를 정해보겠습니다.
현재 if문 부분에서 똑같은 것을 제외하고 다르게 생긴 부분을 ?로 표시해보겠습니다.
물음표를 제외한 나머지 코드는 토씨하나 빼놓지 않고 전부 똑같이 생겼습니다. score[?] 부분에 점수가 들어가면 됩니다. score 리스트의 첫 번째 부분 부터 마지막 부분까지 순차적으로 들어가면 모든 각 성적의 합격 불합격 나눌 수 있을 것 같습니다.
우리는 반복의 범위에 리스트가 들어가도 된다는 점을 알고 있습니다. 이 부분을 이용해보겠습니다.
이런 식으로 반복문을 이용한다면 손쉽게 표현할 수 있습니다.
반복문을 사용하기 위해서는 어떠한 코드가 반복이 되는지 아까 미련하게 if문을 사용했던 것처럼 수동으로 코드를 작성하다보면 쉽게 반복할 코드와 반복의 범위를 눈치챌 수 있습니다.
print(2, "x", 1, "=", 2*1)
print(2, "x", 2, "=", 2*2)
print(2, "x", 3, "=", 2*3)
...
...
print(2, "x", 9, "=", 2*9)
위의 print문은 구구단 중 2단을 출력하는 코드입니다. 반복할 코드와 반복의 범위를 잘 생각해서 2단을 출력하는 반복문을 작성해보고 그 다음 구구단 전체를 출력하려면 어떻게 해야할지 생각해보시면 좋을 것 같습니다.
'프로그래밍 > 파이썬 문법' 카테고리의 다른 글
호기심 파이썬(제어문 : for문을 쉽게 생각하는 법) (0) | 2022.04.22 |
---|---|
호기심 파이썬(유용한 method 및 함수 활용 예시) (0) | 2022.04.21 |
호기심 파이썬(제어문 중 조건문 : if문) (0) | 2022.04.14 |
호기심 파이썬(자료형 : 리스트) (0) | 2022.04.12 |
호기심 파이썬(input 함수와 자료형 변환) (0) | 2022.04.11 |
댓글