05. [프로그래밍/Python]반복문 for 개념, range , for 문의 중첩
*복습 및 초보자 참고용으로 작성된 글입니다.
다음은 반복문에 대한 학습이다.
반복문은 크게 2가지로 나뉠 수 있는데, for문과 while문이 있다.
둘다 반복적으로 값을 출력할 때 사용하는 것이지만, 성질은 확연하게 다르다.
for >> 반복 횟수가 확실한 경우, 즉 순서가 있는 자료형(리스트,튜플)만큼의 반복 횟수를 가진다.
while >> 반복횟수가 명확하지 않는 경우 사용한다.
이에 대한 얘기는 하나 하나 살펴보면서 이해를 하겠다.
5-1 for
<for 문의 기본구조>
for ___1___ in __2__:
[종속 문장 = 반복되는 부분 ]
...
* 1) 반복간 사용 될 변수
2) 순서가 있는 자료형(리스트 튜플)
*for 문 뒤에는 반드시 ':'를 입력시켜야 하고, 수행부분은 들여쓰기를 해줘야 한다.
종속문장이 반복되는 횟수는 순서가 있는 자료형의 개수만큼 출력이 된다.
예를 들어서 다음 코드예시를 통해서 성질을 알아보자.
li = (1,2,3,4,5,6,7,8,9)
for i in li:
print(i)
>> 1
2
3
...
8
9
' li '라는 튜플 자료형이 선언됐다고 가정했을 때,
i 라는 변수가 뒤에 나오는 순서가 있는 자료형에 의해 반복적으로 대입된다는 것을 의미한다.
이때, 단순하게 반복을 의미하는 것이 아닌 뒤에 나오는 리스트나 튜플 내의 모든 요소에 접근하여 출력되는 것이
i라고 이해하면 된다.
5-2 range
자료형이 만약에 10개 미만이라면 print문을 10번 입력하여 출력할 수는 있다.
그러나 만약에 자료형이 1~1000까지 출력해야 하는 프로그램을 작성해야 한다면?
print를 1000번이나 돌리는 행위를 과연 상상할 수 있을까?
이때 순서있는 자료형을 효과적으로 만들어주는 기능이 바로 range이다.
range는 리스트로 묶인 자료로 출력이 되기 때문에 순서가 있는 자료형으로 사용할 수 있으며,
기본적인 특징으로 range(N)은 0에서 N-1까지의 순서있는 자료형을 생성한다.
출력 >>
1
2
3
...
100
1부터 100까지의 자료를 숫자 나열로 표현해주지 않고 range 기능을 통해 범위 설정해주면 된다.
<range의 확장적 기능>
range(시작,끝,간격)
1) range(10) : 0 ~ 9 / 간격 1
2) range(1,10) : 1~ 9 / 간격 1
3) range(1,10,2) : 1, 3, 5, 7, 9 / 간격 2
5-3 for문의 중첩
반복문의 종속문장에 또 다시 반복문이 존재할 경우를 '중첩되었다'라고 표현한다.
for i in range(10): # i 는 0-9 즉, 종속문장을 10 번 반복
for j in range(10): # j 는 0-9 즉, 종속문장을 10 번 반복
print(i,j)
*외부에 존재하는 반복문 >> 외반복문
* 종속문장 안에 존재하는 반복문 >> 내반복문
구조를 살펴보자면,
i 가 0 일때, j 는 0 부터 9 까지 반복 (10회 반복) 한다.
i 가 1 일때, j 는 0 부터 9 까지 반복 (10회 반복) 한다.
i 가 2일때, j 는 0 부터 9 까지 반복 (10회 반복) 한다.
...
i 가 9 일때, j 는 0 부터 9 까지 반복 (10회 반복) 한다.
따라서 내반복문은 외반복문보다 훨씬 빈번하게 반복하고 있다는 특징을 알아볼 수 있다.
5-4 예제
1 . 짝수의 합을 출력하는 프로그램
이 문제를 풀기 위해 복합연산자에 대해 간단하게 알고 갈 필요가 있다.
복합대입연산자는 어떤 값을 축적시키기 위해 사용하는 연산자이다.
즉, ' 왼쪽 변수에 오른 쪽 값을 연산한 뒤, 결과 값들을 왼쪽 변수에 대입하여 저장하라' 라는 의미로 통한다.
복합대입연산자 | 설명 |
a += b | a = a + b (더한 후 대입) |
a -= b | a = a - b (뺀 후 대입) |
a *= b | a = a * b (곱한 후 대입) |
a /= b | a = a / b (나눈 후 대입) |
a //= b | a = a // b (나눈 후 몫만 대입) |
a **= b | a = a ** b (제곱한 후 대입) |
<code>
>> 처음에 값을 입력 받을 변수 n을 선언한다. 1부터 n까지의 숫자를 반복적으로 확인하기 위해 for문을 사용하고, 짝수가 되는 값들을 모두 더해야 하기 때문에 조건문을 사용한다. 우선 짝수를 구하는 방법은 2로 나누었을 때 나머지가 0이 되는 수이기 때문에,
"if a % 2 == 0 " 으로 작성되어야 한다.
이 문제에서 중요한 것은 순서가 있는 자료형(리스트)를 저장하기 위해서 리스트 자료들을 담아낼 수 있는 변수'su'를 설정해야 한다.
그리고 0의 값으로 초기화시킨다.
이때 축적된 값을 su 변수에 저장하기 위해 복합대입연산자 '+='를 사용하게 된다. 이를 통해 왼쪽 변수 'su'에 짝수가 되는 값 'i'를 모두 더하여 리스트 자료형으로 출력되게 해야 한다.
n의 값을 10으로 입력시켰을 때,
2 + 4 + 6 + 8 + 10 = 30
이 되어야 한다.
<result>
'programming > python' 카테고리의 다른 글
04. [프로그래밍/Python]제어문 - 조건문(if), if 문법 활용 (0) | 2021.07.03 |
---|---|
03. [프로그래밍/Python]조건문 개념 정의, 자료형 bool(비교연산자, 논리연산자) (0) | 2021.06.26 |
02. [프로그래밍/Python] 자료형(숫자형, 문자형 개념), input (0) | 2021.06.04 |
01. [프로그래밍/Python] 출력, 변수 (0) | 2021.05.26 |