반복문이란, 지난 글에서의 제어문의 반복 구조이다.
반복 구조도 지속적으로 할지 끝 낼지에 대한 조건을 따져볼 수 있으며,
참일 때 계속 반복하고, 거짓일 때 끝나는 순서도의 구조이다.
반복문의 종류에는, 2가지가 있다.
정해진 횟수만큼 반복할 것인가, 조건이 성립되는 동안 반복을 할 것인가
for문과 while문
for문은 반복문 시작 전에 반복 횟수를 아는 경우에 사용한다.
for라는 키워드라고 시작해서 in 뒤에 정의된 횟수만큼 반복
조건문과 동일하게 for 문장 이후에 클론(:) 붙이기
반복되는 코드 블록은 들여쓰기 (띄어쓰기 4번)으로 구분
range 안에는 (시작값, 끝값 + 1)의 값이 들어간다.
range 안에 (시작값, 끝값+1, 증가값)을 설정해서 반복할 수 있는 횟수를 정할 수 있다.
range 함수는 iterable한 정수 원소를 가진 list 유사의 객체
for i in range(1,10): #즉 1부터 9까지의 반복이라 보면된다.
print(a);
for i in range(1, 10, 3): #1부터 9까지 3씩 증가하여 반복
#기본값은 1
시작값 , 끝값 , 증가값을 설정하는것에 따라 감소시키면서도 반복을 할 수 있다.
for문은 중첩해서 사용할 수 있는다. 바깥과 안쪽이라고 생각하며 된다.
i,j,k가 관례이고
바깥이 처음 돌아가고 그 안에 for문이 다 돌면 그 바깥 for문이 돈다.
이것 또한 띄어 쓰기가 중요하다.
for i in range(1,10):
for j in range(1, 10):
print(a) #i = 1일때 j가 9번 반복되야지
#for문을 나가서 i가 2가됌
for문 반복은 계속 중첩 할 수 있다.
while문은 for문과 살짝 달게, 반복 횟수를 정하는 게 아닌 조건식이 참일때, 반복을 한다.
if문의 반복 버전이라고 생각해도 편하다.
while문도 조건식 다음 콜론(:)을 붙이고
조건식은 True or False 계산
관계 연산자를 사용한다.
i = 0
sum = 0
while i<=10:
sum = sum + i
i = i + 1
이런 식으로 증가한다고 보면 된다.
while문은 무한루프에 빠지기 쉽다.
저 위의 코드에서 i값을 증가시키지 않았다면 무한루프에 빠졌을 것이다.
while True:라고도 하면 무한 반복이 가능하다.
이러한 무한 반복의 성질을 활용한다면, 프로그램 작성할 수 있다.
무한 반복의 성질에서 잘 알아둬야 할것이 break이라는 키워드이다.
반복문을 빠져 나와 종료 시키는 것이다.
while True:
a = input("a~z까지의 단어 중 아무거나 넣어보세요. ")
if a == 'q':
print("종료합니다")
break
방금 코드를 보면 a가 q가되면 while문은 종료된다.
결국 모든 반복문에서 break문을 사용하면 break바로 전까지 실행이 되고
break을 만났을 때 종료되는 성질을 이용할 수 있다.
또 continue라는 키워드가 있는데, continue는 현재 반복을 생략하고
다음 순번의 반복을 수행하라는 명령이다.
while True:
a = 10
if a = 10:
continue
elif a = 15: #continue가 실행 되면 elif가 무시된다.
하위 문장을 실행하지 않는다라고 보면 된다.

그림을 계속 보고 이해해보자
#break, continue로 예제
#while 무한루프를 사용하면서 10 이하의 홀수만 나오게 하기
i = 0
while True:
i = i + 1
if i > 10:
break
if i % 2 ==0:
continue
print(i)
print("while 종료")
반복 횟수가 제시될 때 반복 -> for
조건이 만족하는 한 계속 반복 -> while
즉, 무한 반복이 필요하면서 특정 조건이 만족 될 때 반복이 멈춰야하는
case에선 while문이 적합하고
처음부터 반복횟수가 정해져있다면, for문이 더 적합하다.
for문의 reversed() 함수는 파이썬 인터프리터가 제공해주는 내장함수 중 하나로 시퀀셜 타입 데이터에 역 이터레이터를 돌려준다.
즉 reverse를 시켜준다고 보면된다.
for i in range(0,5):
print("i: ",i)
for i in reversed(range(0, 5)):
print("i: ", i)
#range() 함수 결과에다가 reversed를 적용할 수 있다.
#0,1,2,3,4
#,4,3,2,1,0
# 이 나온다.
또 다른 특징으로는 리스트라는 자료구조에서 대괄호를 활용해서 값을 넣으면 그 값 넣은 순서가 바뀌지 않고 유지된다.
리스트 안에 값 개수만큼의 반복
리스트는 숫자뿐만 아니라 boolean 실수 문자형도 가능하다.
파이썬은 문자형의 반복도 가능하다.
순서가 있는 자료형이라면 어느 것이든 반복 횟수를 제공할 수 있다.
-> 중요한 point
enumerate()함수는 순서가 있는 자료형을 입력으로 받아 인덱스 값을 포함하는 enumerate 객체를 반호나해준다.
인덱스는 순서가 있는 자료형의 순서를 표시
리스트가 ['강원대',0.4,10,True]
라면, 인덱스 0에 강원대, 인덱스 1에 0.4등을 표시해줌
반복문은 결론적으로 초입에서 조건식을 검사하고 반복을 한다.