◾ 반복문
반복문
: 특정 실행을 반복하는 것
- 코드가 간결해지고 유지보수가 쉬워진다.
- 대량 메일, 대량 문자, 인사말 반복, mp3 반복 재생, 타이머, 기상 알람 등
- 반복문 사용 이유
- 구구단 같은 경우 수동으로 코드를 작성하게 되면 비효율적이다.
- 반복을 통해 구현하게 되면 훨씬 간결하게 나와 효율적이다.
print('{} * {} = {}'.format(2,1,(2*1)))
print('{} * {} = {}'.format(2,2,(2*2)))
print('{} * {} = {}'.format(2,3,(2*3)))
print('{} * {} = {}'.format(2,4,(2*4)))
print('{} * {} = {}'.format(2,5,(2*5)))
print('{} * {} = {}'.format(2,6,(2*6)))
print('{} * {} = {}'.format(2,7,(2*7)))
print('{} * {} = {}'.format(2,8,(2*8)))
print('{} * {} = {}'.format(2,9,(2*9)))
print('-'*25)
for i in range(1, 10):
print('{} * {} = {}'.format(2, i, (2 * i)))
- 반복문의 종류
- 횟수에 의한 반복
- 횟수 지정 ➡ 횟수 만큼 반복 실행
for i in range()
: range만큼 반복
- 조건에 의한 반복
- 조건 지정 ➡ 조건에 만족할 때까지 반복
while 조건
: 조건이 False가 될 때까지 반복
1. 횟수에 의한 반복
- 정해 놓은 반복 횟수에 따라 반복 실행(대량 메일, 대량 문자, 인사말 반복 등)
- for 문 :
for ~ in
- for i in 반복 가능 자료형 : 반복 가능한 자료형의 데이터가 하나씩 i에 저장되며 반복
i
: 데이터를 저장할 변수
반복 가능 자료형
: range(), List, Tuple, Dict 등
range(n)
: 0 ~ n-1 까지의 데이터 생성
- if 문처럼
pass
키워드로 실행문을 나중에 작성할 수 있다.
코드블럭
: 들여쓰기를 통해 for 문의 실행문임을 나타낸다.
for j in range(10):
result = 7 * j
print('{} * {} = {}'.format(7, j, result))
- 반복 범위 설정
- range()를 주로 사용
range(a, b, c)
: 기본형으로 a~b-1까지 c씩 증가하는 범위
range(a, b)
: 단계 매개변수 생략형으로 a~b-1까지 1씩 증가하는 범위
range(a)
: 시작, 단계 매개변수 생략형으로 0~a-1까지 1씩 증가하는 범위
for i in range(startNum, endNum+1):
print(i)
for i in range(startNum, endNum+1, 2):
print(i)
2. 조건에 의한 반복
- 조건 만족시 반복 실행, 그렇지 않으면 반복 중단(기상 알람, 게임 반복 실행, 타이머 등)
- while문 사용 방법
while 조건
: 조건이 만족하면 반복 실행
- if 문처럼
pass
키워드로 실행문을 나중에 작성할 수 있다.
코드블럭
: 들여쓰기를 통해 while 문의 실행문임을 나타낸다.
endNum = 10
n = 0
while n <= endNum :
print(n)
n += 1
3. for문과 while문 비교
- for문이 적합한 경우
- 횟수에 의한 반복일시 for문이 적합
- sum으로 비교 : 범위가 정해지면 for문이 더 간결하게 작성됨을 볼 수 있다.
sum = 0
for i in range(1, 11):
sum += i
print('for-sum : {}'.format(sum))
sum = 0
n = 1
while n < 11:
sum += n
n += 1
print('while-sum : {}'.format(sum))
- while문이 적합한 경우
- 조건에 의한 반복이라면 while문이 적합
- 1 부터 시작해서 7의 배수의 합이 50이상인 최초의 정수 출력으로 비교
- for문은 100까지 검사를 진행하지만 while문은 28에서 멈추는 것을 확인할 수 있다.
sum = 0
maxInt = 0
for i in range(1, 101):
if i % 7 == 0 and sum <= 50:
sum += i
maxInt = i
print('i : {}'.format(i))
print('7의 배수의 합이 50 이상인 최초의 정수 : {}'.format(maxInt))
sum = 0
maxInt = 0
n = 1
while n <= 100 and sum <= 50:
if n % 7 == 0 and sum <= 50:
sum += n
maxInt = n
print('n : {}'.format(n))
n += 1
print('7의 배수의 합이 50 이상인 최초의 정수 : {}'.format(maxInt))
◾ 무한 루프
무한 루프
: 반복문을 빠져나갈 수 없는 경우
n = 1
while n < 10:
print('Hello~')
- 논리형 데이터 사용
- 조건식에 논리형 데이터를 사용해 무한 반복할 수 있다.
- 반복문내에서 특정 조건에서 논리형을 변경하여 반복문을 탈출할 수 있다.
flag = True
num = 0
sum = 0
while flag:
num += 1
sum += num
print("{}까지의 합은 {}입니다.".format(num, sum))
if sum >= 1000:
flag = False
◾ 반복문 제어
1. Continue 키워드
continue 키워드
: 반복 실행 중 만나면 다음 실행을 생략하고, 다음 반복 실행문으로 넘어간다.
for i in range(11):
if i % 2 != 0 :
continue
print('{}는 2의 배수 입니다.'.format(i))
else 키워드
: 반복문이 종료된 후 실행된다.
- 단, break문으로 종료시 실행되지 않는다.
cnt = 0
for i in range(11):
if i % 2 != 0:
continue
print('{}는 2의 배수입니다.'.format(i))
cnt += 1
else:
print('10까지의 정수 중 2의 배수는 {}입니다.'.format(cnt))
2. Break 키워드
break 키워드
: 반복 실행 중 만나면 반복문을 탈출
num = 0
while True:
print('Hello')
num += 1
if num >= 5 :
break
sum = 0
searchNum = 0
for i in range(1, 101):
sum += i
if sum > 100:
searchNum = i
break
print('searchNum : {}'.format(searchNum))
◾ 중첩 반복문
중첩 반복문
: 반복문안에 또 다른 반복문을 선언한다.
- 너무 많은 반복문을 중첩하면 코드가 복잡해지고 연산이 너무 많아져 시스템에 부하가 일어날 수 있다.
for i in range(1, 10):
for j in range(i):
print('*', end='')
print()
for i in range(1, 10):
for j in range(2, 10):
result = j * i
print('{} * {} = {}\t'.format(j, i, result), end='')
print()