SW/Python

[Python 문법] 반복문

ahhyeon 2023. 3. 7. 16:32

7. 반복문

  • 특정한 소스코드를 반복적으로 실행하고자 할 때 사용하는 문법
  • while문과 for문을 사용
    • while문 : 조건에 의한 반복
    • for문 : 데이터셋 반복

ex) 1부터 9까지 모든 정수의 합 구하기 - while문 사용

i = 1
result = 0

# i가 9보다 작거나 같을 때 아래 코드를 반복적으로 실행
while i <= 9:
  if i % 2 == 1:
    result += i
  i += 1

print(result)    // 25

7-1. 반복문에서의 무한 루프

  • 무한루프(Infinite Loop)란 끊임없이 반복되는 반복 구문
    • 반복문을 작성한 뒤 항상 반복문을 탈출이 가능한지 확인할것
x = 23

while x > 10:
  print(x)
while True:
  i = input()
  if i == 'p':
    print(str(i)+'를 입력하셨습니다.')
    break

7-2. for문

  • 반복문으로 for문 이용
  • for문의 구조는 특정한 변수를 이용하여 'in' 뒤에 오는
  • 데이터(리스트, 튜플) 포함되어 있는 원소를 첫 번째 인덱스부터 차례대로 하나씩 방문
for A in B:
  → 명령문

# 해석
B(데이터셋)에서 데이터를 차례대로 하나씩 꺼내어 A(임시저장공간)에 불러오는 과정을 반복하며
  → (들여쓰기 된) 명령문을 실행해줘!

7-3. while문

  • 반복문으로 while문 이용
  • 조건에 의해 반복할때
  • if와 다른점은?
    • if는 조건이 참이면 명령문 실행
    • while은 조건이 참이면 명령문 반복
    • while은 if의 반복 버전!
while 조건:
  → 명령문

# 해석
만약 조건이 참이라면
  → (들여쓰기 된) 명령문을 **반복**해줘! 
array = [2023,2022,2021,2020,2019,2018]

for i in array:
  print(i)

7-4. range() 함수

for문에서 연속적인 값을 차례대로 순회할 때 사용하는 함수
  • 이때, range(시작 값, 끝 값 + 1) 형태
  • 인자를 하나만 넣으면 자동으로 시작값은 0
  • range(10) : 0 ~ 10 이전 범위의 정수
  • range(1,10) : 1 ~ 10 이전 범위의 정수
  • range(1,10,3): 1 ~ 10 이전 범위의 정수를 3씩 증가
  • range(10,1,-1): 10 ~ 1 이전 범위의 정수를 1씩 감소
result = 0

# i는 1부터 9까지의 모든 값을 순회
for i in range(1,10):
  result += i

print(result)   // 45

7-5. continue 키워드

  • 반복문에서 남은 코드의 실행을 건너뛰고, 다음 반복을 진행하고자 할 경우 continue를 사용
  • ex) 1부터 9까지의 홀수의 합을 구할 때 다음과 같이 작성
result = 0

for i in range(1, 10):
  if i % 2 == 0:
    continue
  result += i

print(result)    // 25

7-6. break 키워드

  • 반복문을 즉시 탈출할 경우 break를 사용
  • ex) 1부터 9까지의 정수를 차례대로 출력하고자 할 때 다음과 같이 작성
i = 1

while True:
  print("i의 값 : ", i)
  if i == 9:
    break
  i += 1
  
/*
i의 값 :  1
i의 값 :  2
i의 값 :  3
i의 값 :  4
i의 값 :  5
i의 값 :  6
i의 값 :  7
i의 값 :  8
i의 값 :  9
*/

[연습1]

  • 지원자들의 통과 여부 판단
  • 점수가 60점 넘으면 통과
scores = [60,90,45,80,55]

for i in range(5):
  if scores[i] >= 60:
    print(i + 1, "번 지원자는 통과하셨습니다.")

/*
1 번 지원자는 통과하셨습니다.
2 번 지원자는 통과하셨습니다.
4 번 지원자는 통과하셨습니다.
*/

[연습2]

  • 지원자들의 통과 여부 판단
  • 특정 번호의 지원자는 제외
scores = [60,90,45,80,55]
cheating_applicant_list = {3,5}

for i in range(5):
  if i + 1 in cheating_applicant_list:
    continue
  if scores[i] >= 60:
    print(i + 1, "번 지원자는 통과하셨습니다.")
    
/*
1 번 지원자는 통과하셨습니다.
2 번 지원자는 통과하셨습니다.
4 번 지원자는 통과하셨습니다.
*/

[연습3]

  • 중첩된 반복문
  • ex) 구구단
for i in range(7,10):
  for j in range(1,10):
    print(i, "x", j, "=", i * j)
  print()
  
  /*
  7 x 1 = 7
7 x 2 = 14
7 x 3 = 21
7 x 4 = 28
7 x 5 = 35
7 x 6 = 42
7 x 7 = 49
7 x 8 = 56
7 x 9 = 63

8 x 1 = 8
8 x 2 = 16
8 x 3 = 24
8 x 4 = 32
8 x 5 = 40
8 x 6 = 48
8 x 7 = 56
8 x 8 = 64
8 x 9 = 72

9 x 1 = 9
9 x 2 = 18
9 x 3 = 27
9 x 4 = 36
9 x 5 = 45
9 x 6 = 54
9 x 7 = 63
9 x 8 = 72
9 x 9 = 81
*/

[실습]

  • 조건문과 반복문의 콤보
  • 1번부터 10번까지 지원자를 순서대로 출력
# 문제해결과정 절차적으로 설명해보기

1) 1부터 10까지의 정수 범위를 만든다.
2) 범위를 반복한다.
3) 각 정수를 출력한다.
# 코드로 표현해보기
for i in range(1, 11):
  print(i)

# 숫자를 문자로 바꿀땐 string
for i in range(1,11):
  print(str(i)+'번 지원자님 대기실로 들어오시길 바랍니다!')

/*
1
2
3
4
5
6
7
8
9
10
1번 지원자님 대기실로 들어오시길 바랍니다!
2번 지원자님 대기실로 들어오시길 바랍니다!
3번 지원자님 대기실로 들어오시길 바랍니다!
4번 지원자님 대기실로 들어오시길 바랍니다!
5번 지원자님 대기실로 들어오시길 바랍니다!
6번 지원자님 대기실로 들어오시길 바랍니다!
7번 지원자님 대기실로 들어오시길 바랍니다!
8번 지원자님 대기실로 들어오시길 바랍니다!
9번 지원자님 대기실로 들어오시길 바랍니다!
10번 지원자님 대기실로 들어오시길 바랍니다! 
*/
for i in range(1,11):
  if i % 10 == 0: # %는 나머지 => 10으로 나눈 나머지가 0과 같을때(10의 배수)
    print('축하합니다. 우선 선발 대상입니다')

  print(str(i)+'번 지원자님 면접실로 들어오시길 바랍니다!')
  
  
  /*
  1번 지원자님 면접실로 들어오시길 바랍니다!
2번 지원자님 면접실로 들어오시길 바랍니다!
3번 지원자님 면접실로 들어오시길 바랍니다!
4번 지원자님 면접실로 들어오시길 바랍니다!
5번 지원자님 면접실로 들어오시길 바랍니다!
6번 지원자님 면접실로 들어오시길 바랍니다!
7번 지원자님 면접실로 들어오시길 바랍니다!
8번 지원자님 면접실로 들어오시길 바랍니다!
9번 지원자님 면접실로 들어오시길 바랍니다!
축하합니다. 우선 선발 대상입니다
10번 지원자님 면접실로 들어오시길 바랍니다!
*/