본문 바로가기

연구노트/Python

Python의 제어문(for문)

 

 
프로그램의 구조를 쌓는 for문
 
for문이란?

for문의 장점이라고 하면 파이썬의 직관적인 특징을 잘 대변해 준다.

while문과 비슷한 반복문인 for문은 매우 유용하고 문장 구조가 한눈에 쏙 들어온다는 장점이 있다.

for문을 잘 사용하면 프로그래밍이 수월할 것이다.

아래 예제는 리스트의 첫 번째 요소인 ‘one’이 I 변수에 대입된 후 print(i) 문장을 수행한다.

다음에 두 번째 요소인 ‘two’가 I 변수에 대입된 후 print(i) 문장을 수행하고 리스트 마지막 요소까지 이 동작을 반복한다.

##for문의 기본예제
test_list = ['one', 'two', 'three']
for i in test_list:
      print(i)
...
→ one
→ two
→ three
 

 

for문의 기본구조

for문의 기본구조는 다음과 같다. “for 변수 in 리스트(또는 튜플, 문자열): 수행할 문장1, 수행할 문장2” 리스트나 튜플,

문자열의 첫 번째 요소부터 마지마 요소까지 차례로 변수에 대입되어 문장을 수행한다.

아래 예제는 a 리스트의 요솟값이 튜플이기 때문에 각각의 요소가 자동으로 (first, last) 변수에 대입된다.

##다양한for문의 예제
a = [(1,2), (3,4), (5,6)]
for (first, last) in a:
      print(first + last)
...
→ 3
→ 7
→ 11
 

 

for문의 응용

“총 5명의 학생이 시험을 보았는데 시험 점수가 60점이 넘으면 합격이고 그렇지 않으면 불합격이다.

합격인지 불합격인지 결과를 보여 주시오.” 아래 예제를 확인해 보자.

##다양한for문의 응용
marks = [90, 25, 67, 45, 80]
number = 0
for mark in marks:
      number = number + 1
      if mark >= 60:
            print("%d번 학생은 합격입니다." % number)
      else:
      print("%d번 학생은 불합격입니다." % number)
...
→ "1번 학생은 합격입니다."
→ "2번 학생은 불합격입니다."
→ "3번 학생은 합격입니다."
→ "4번 학생은 불합격입니다."
→ "5번 학생은 합격입니다."
 

 

continue문

while문과 마찬가지로 for문에서도 continue문을 사용할 수 있다. 문장 수행 중 continue를 만나면 for문의 처음으로 돌아간다.

아래 예제는 점수가 60점 이하인 학생일 경우에는 mark < 60이 참이 되어 continue문이 수행된다.

따라서 축하 메시지를 출력하는 부분인 print문을 수행하지 않고 for문의 처음으로 돌아가게 된다.

##for문에서 continue문 사용 예제
marks = [90, 25, 67, 45, 80]
number = 0
for mark in marks:
      number = number + 1
      if mark < 60: continue
            print("%d번 학생은 합격입니다." % number)
...
→ "1번 학생은 합격입니다."
→ "3번 학생은 합격입니다."
→ "5번 학생은 합격입니다."
 

 

range함수

for문은 숫자 리스트를 자동으로 만들어 주는 range 함수와 함께 사용하는 경우가 많다. 다음은 range 함수의 간단한 사용법이다.

range(10)은 0부터 10 미만의 숫자를 포함하는 range 객체를 만들어 준다.

##for문에서 range 함수 사용 예제
a = range(10)
a
→ range(0, 10)
a = range(1, 11)
a
→ range(1, 11) ## 1 ~ 10을 의미
 

위의 예제에서 range(시작 숫자, 끝 숫자) 형태를 사용하는데, 이때 끝 숫자는 포함되지 않는다.

 

range함수 예시

for와 range함수를 사용하면 1부터 10까지 더하는 것을 쉽게 구현할 수 있다. 아래 예제를 확인해보자.

range(1, 11)은 숫자 1부터 10까지의 숫자를 데이터로 갖는 객체이다. 따라서 위 예에서 i 변수에 리스트의 숫자가 1부터 10까지 하나씩 차례로 대입되면서 add = add + i 문장을 반복적으로 수행하고 add는 최종적으로 55가 된다.

##for문에서 range 함수 사용 예제2
add = 0
for i in range(1, 11):
      add = add + i

print(add)
→ 55
 

앞서 살펴본 예시에서도 사용해보자. ‘len’함수는 리스트 안의 요소 개수를 돌려주는 함수이다.

‘len(marks)’는 5가 될 것이고 ‘range(len(marks))’는 range(5)가 될 것이다.

Number 변수에는 0부터 4까지의 숫자가 대입될 것이고, marks[number]는 차례대로 90, 25, 67, 45, 80값을 갖게 된다.

결과는 "for문에서 continue문 응용 예제"와 출력이 동일하다.

##for문에서 range 함수 응용
marks = [90, 25, 67, 45, 80]
for number in range(len(marks)):
      if marks[number] < 60: continue
      print("%d번 학생은 합격입니다." % (number + 1))
...
→ "1번 학생은 합격입니다."
→ "3번 학생은 합격입니다."
→ "5번 학생은 합격입니다."
 

 

for와 range를 이용한 구구단

for와 range를 이용하여 구구단을 출력할 수 있다. 소스 코드 단 4줄만으로 구구단을 출력해 보자.

##구구단 만들기
for i in range(2, 10): ← 1번 for문
      for j in range(1, 10): ← 2번 for문
            print(i*j, end=" ")
      print('')
...
 

위의 예를 보면 for문을 두 번 사용했다. 1번 for문에서 2부터 9까지의 숫자가 차례로 i에 대입된다.

i가 처음 2일 때 2번 for문을 만나게 된다. 2번 for문에서 1부터 9까지의 숫자가 j에 대입되고 그 다음 문장을 수행한다.

따라서 i가 2일 때 2*1, 2*2 ... 2*9까지 차례로 수행되며 그 값을 출력하게 된다.

그 다음 i가 3일 때 역시 2일 때와 마찬가지로 수행될 것이고 i가 9일 때까지 계속 반복된다.

 

 

리스트 내포 사용하기

리스트 안에 for문을 포함하는 리스트 내포를 사용하면 좀 더 편리하고 직관적인 프로그램을 만들 수 있다.

다음 예제를 보자. 아래 예제는 a 리스트의 각 항목에 3을 곱한 결과를 result 리스트에 담는 예제이다.

##리스트 내포 예제1
a = [1, 2, 3, 4]
result = [ ]
for num in a:
      result.append(num*3)
print(result)
→ [3, 6, 9, 12]
 

이것을 리스트 내포를 사용하면 간단히 해결할 수 있다.

##리스트 내포 예제2
a = [1, 2, 3, 4]
result = [num * 3 for num in a]
print(result)
→ [3, 6, 9, 12]
 

만약 [1,2,3,4] 중에서 짝수만 3을 곱하여 담고 싶다면 다음과 같은 예제를 참고해보자.

##리스트 내포 예제3
a = [1, 2, 3, 4]
result = [num * 3 for num in a if num % 2 == 0]
print(result)
→ [6, 12]
 

리스트 내포의 일반 문법은 [표현식 for 항목 in 반복 가능 객체 if 조건]의 형태로 작성한다.

조금 복잡하지만 for문을 2개 이상 사용하는 것도 가능하다.

만약 구구단의 모든 결과를 리스트 내포를 사용하여 다음과 같이 간단하게 구현할 수도 있다.

##리스트 내포 예제4
result = [x*y for x in range(2, 10)
      for y in range(1, 10)]
print(result)
→ [2, 4, 6, ... , 72, 81]
 

 

 

지금까지 프로그램 구조를 쌓는 if문, while문, for문에 대해 알아보았다.

예제를 통해 코드를 작성해 보니 while문과 for문의 비슷하다는 느낌을 많이 받았다.

실제로 프로그래밍을 하다보면 서로 바꾸어 사용하는 경우가 있다고 한다.

다음 연구 주제는 파이썬의 함수에 대해서 알아보도록 하자.

 

 

 

 

'연구노트 > Python' 카테고리의 다른 글

Python 파일 읽고 쓰기  (0) 2025.04.16
Python의 함수  (0) 2025.04.16
Python 제어문(while문)  (1) 2025.04.08
Python 제어문(if문)  (1) 2025.04.07
Python 집합 자료형, 불 자료형  (0) 2025.04.07