파이썬을 이용해서 반복문 만드는 이유와 알고리즘을 이용한 이해 while 함수까지 지난번 포스팅에서 알게 되었다면 이이번에는 for 함수를 이용해서 반복문을 만드는 방법을 알아보도록 하겠습니다.
2022.03.23 - [분류 전체보기] - 파이썬 - 반복문 만들기1
목차
for 반복문
앞에서 while 반복문의 경우는 하나의 조건식만 만족한다면 계속해서 반복하는 간력한 반복문의 형태를 띄었습니다. 다만, while문의 경우는 조건식을 잘못 지정해 놓을 경우, 무한 반복 루프에 빠질 수 있다는 단점이 있습니다. 이 단점을 보안한 함수가 있는데 그게 for 반복문입니다. for 반복문은 반복할 횟수를 지정해 놓았기 때문에 무한 루프에 빠지는 경우가 없고, 딱 정해진 횟수만큼만 반복하여 결과값을 도출합니다.
형태
for a in 데이터 세트 :
반복 처리할 식
→ for ~ in ~ 이 하나의 세트라고 생각하시면 되고,
데이터 세트 값들을 a라는 변수에 하나씩 불러낸다고 생각하시면 됩니다. 만약 데이터가 3개라면 그 3개를 각각 a라는 변수 값에 불러서 반복 처리할 식에 대입하는 겁니다. 총 3번을 반복해서 수행하는 거죠.
간단한 예제를 살펴보겠습니다.
계란 한판 = [계란1, 계란2, 계란3]
for a in 계란 한판 :
print("달걀 후라이")
라고 코드를 짰다면, 결과값으로
달걀 후라이
달걀 후라이
달걀 후라이
이렇게 총 3번의 함수가 반복되는 것을 알 수 있습니다. 리스트 함수만큼만 반복하게 되는 거죠.
조금 더 어려운 예제를 보시면,
60점 이상인 학생과 미만인 학생으로 나누는 문제입니다.
점수 = [80,50,35,90,70] → 점수 분포도를 리스트 형태로 나타냈습니다.
학생수 = 0 → 학생 개개인의 특성을 주기 위해서 변수를 별도로 설정합니다.
for i in 점수 : → for문을 써서 총 5번 반복이 되도록 합니다.
학생수 = 학생수+1 → '0'부터 시작해 '4'까지 들어가서 1~5까지 결과값을 도출합니다.
if i >= 60: → 조건절을 사용해서 학생 점수에 조건을 겁니다.
print(str(number) + "번 학생 60점 이상") → 학생 개개인의 번호를 문자열로 변경시킨 후에 출력합니다.
else: → 위에 조건식에 만족하지 않는다면,
print(str(number) + "번 학생 60점 미만") → 이와 같은 값을 나오게끔 해라라는 뜻입니다.
for 함수와 range 함수 같이 쓰기
for 함수와 가장 많이 같이 쓰는 함수는 range 함수입니다. 범위를 정해놓고 그 범위안에서 반복을 한다고 했는데, 그 범위를 지정해줄 수 있는 가장 최적의 함수가 바로 'range'입니다. range 함수의 형태를 살펴보면,
range( 시작값, 끝값, 증가값step ) 이 기본 구조인데, 우리는 시작값과, 증가값은 쓰지 않고, range( 끝값 ) 만 써도 값은 도출이 됩니다.
range 함수의 특징은
1) 정수생선을 하고, 시작값은 포함하고, 끝값은 포함하지 않습니다. 그래서 원하는 끝값까지 나오게 하고 싶다면 +1을 해줘야 합니다.
for a in range(5):
print(a)
→ 0, 1, 2, 3, 4
2) 시작값을 생략하면 0으로 간주합니다. 코딩 특성상, 숫자가 1에서 시작하는 게 아니라 0에서 시작합니다.
3) 증가값을 생략하면 1씩 증가하게 됩니다. 만약 2의 배수씩 뜨게 하고 싶다면,
for a in range(0,10,2):
print(a)
→ 0, 2, 4, 6, 8 * 실제 값은 세로로 나옵니다. 별도 end=', ' 함수를 끝에 붙인다면 가로로 나오게 됩니다.
4) 증가값을 음수로 사용하면 역순으로 나옵니다.
for a in range(0,10,-2):
print(a)
→ 8, 6, 4, 2, 0
break&continue 함수
break와 continue를 for 함수 사용할 때 주로 사용하곤 합니다. 그 특징들을 살펴보면,
break는 현재 진행 중인 반복 처리를 중단하고, 전체 for 반복문을 종료한다는 뜻입니다. 즉, break이후에 어떠한 함수를 사용해서 식을 만들어도 그 식을 이용해서 결과값을 도출할 수 없다는 뜻입니다.
continue는 현재 진행 중인 반복 처리를 중단하되, 다음 횟수의 반복 처리를 진행한다는 뜻입니다. 즉, 이번 함수만 처리하지 않고, 바로 다음으로 넘어가겠다는 의미입니다.
break와 continue 중에 break가 조금 더 강한 느낌으로 다가오는 건 전체 문장을 종료시킬 수 있는 함수이기 때문인 거 같습니다.
댓글