파이썬 기초 - 반복문

이상해씨·2021년 9월 17일
0
post-custom-banner

◾ 반복문

  • 반복문 : 특정 실행을 반복하는 것
    • 코드가 간결해지고 유지보수가 쉬워진다.
    • 대량 메일, 대량 문자, 인사말 반복, 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 문 : 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씩 증가하는 범위
# start ~ end 까지 1씩 증가하며 반복
for i in range(startNum, endNum+1):
    print(i)
    
# start ~ end 까지 2씩 증가하며 반복
for i in range(startNum, endNum+1, 2):
    print(i)

2. 조건에 의한 반복

  • 조건 만족시 반복 실행, 그렇지 않으면 반복 중단(기상 알람, 게임 반복 실행, 타이머 등)
    • while 문이 주로 사용
  • while문 사용 방법
    • while 조건 : 조건이 만족하면 반복 실행
    • if 문처럼 pass 키워드로 실행문을 나중에 작성할 수 있다.
    • 코드블럭 : 들여쓰기를 통해 while 문의 실행문임을 나타낸다.
endNum = 10
n = 0
while n <= endNum :
    print(n)
    n += 1

3. for문과 while문 비교

  • for문이 적합한 경우
    • 횟수에 의한 반복일시 for문이 적합
    • sum으로 비교 : 범위가 정해지면 for문이 더 간결하게 작성됨을 볼 수 있다.
# for 문
sum = 0
for i in range(1, 11):
    sum += i
print('for-sum : {}'.format(sum))

# whlie 문
sum = 0
# n이라는 추가적인 변수를 사용한다.
# 따라서 for문이 더 적합하다.
n = 1
while n < 11:
    sum += n
    n += 1
print('while-sum : {}'.format(sum))
  • while문이 적합한 경우
    • 조건에 의한 반복이라면 while문이 적합
    • 1 부터 시작해서 7의 배수의 합이 50이상인 최초의 정수 출력으로 비교
      • for문은 100까지 검사를 진행하지만 while문은 28에서 멈추는 것을 확인할 수 있다.
# for 문
sum = 0
maxInt = 0
# sum이 50을 넘더라도 마지막까지 반복을 진행한다.
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))

# while 문
sum = 0
maxInt = 0
n = 1
# sum이 50을 넘는 순간 반복문이 중단된다.
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))

◾ 무한 루프

  • 무한 루프 : 반복문을 빠져나갈 수 없는 경우
    • while의 조건이 항상 True인 경우
# 무한 루프
n = 1
# n에 추가적인 연산이 없어 무한 루프가 형성된다.
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 키워드 : 반복 실행 중 만나면 다음 실행을 생략하고, 다음 반복 실행문으로 넘어간다.
# continue를 이용해 2의 배수만 출력하는 구조 구현
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를 이용해 2의 배수 개수 출력
else:
    print('10까지의 정수 중 2의 배수는 {}입니다.'.format(cnt))

2. Break 키워드

  • break 키워드 : 반복 실행 중 만나면 반복문을 탈출
num = 0
# 무한 루프
while True:
    print('Hello')
    num += 1
    # 5회 반복시 강제 탈출
    if num >= 5 :
        break
# 1부터 100까지의 정수를 더하다 합계가 100이 넘으면 탈출
sum = 0
searchNum = 0
for i in range(1, 101):
    sum += i

    if sum > 100:
        searchNum = i
        break
print('searchNum : {}'.format(searchNum))

◾ 중첩 반복문

  • 중첩 반복문 : 반복문안에 또 다른 반복문을 선언한다.
    • 너무 많은 반복문을 중첩하면 코드가 복잡해지고 연산이 너무 많아져 시스템에 부하가 일어날 수 있다.
# 중첩 반복문

# 반복문 1
for i in range(1, 10):
    # 반복문 2
    for j in range(i):
        print('*', end='')
    # 반복문 2
    print()
# 반복문1
  • 2 ~ 9단의 구구단
for i in range(1, 10):
    for j in range(2, 10):
        result = j * i
        print('{} * {} = {}\t'.format(j, i, result), end='')
    print()

profile
후라이드 치킨
post-custom-banner

0개의 댓글