본문 바로가기
Python/03. 프로그램의 구조를 쌓는 제어문

03-3 for 문

by gamdong2 2024. 7. 14.

📖 for 문

리스트•튜플•문자열's 요소들을 차례로 변수에 대입 → for 문에 속한 문장들을 수행

 

1) for 문 기본 구조

for 변수 in 리스트(or 튜플, 문자열):
    수행할 문장1
    수행할 문장2
    ...

 

 

 

2) for 문 예제

# 리스트 test_list의 요소들이 차례로 변수 i에 대입됨; print(i)을 수행
>>> test_list = ['one', 'two', 'three']
>>> for i in test_list:
...     print(i)
...
one
two
three
# 리스트 a의 요솟값이 튜플; 각각의 요소가 자동으로 (first, last) 변수에 대입됨
>>> a = [(1, 2), (3, 4), (5, 6)]
>>> for (first, last) in a:
...     print(first, last)
...
3
7
11

 

 

 

3) 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)

- 각각의 학생에게 번호를 붙여주기 위해 number 변수 사용

- 리스트 marks에서 차례로 점수를 꺼내, 변수 mark에 대입; for 문 내의 문장들을 수행

- for 문이 한 번씩 수행될 때마다 number는 1씩 증가

 

 

 

4) for 문과 continue 문

  • for 문 안의 문장을 수행하는 도중 continue 문을 만나면 for 문의 처음으로 돌아감
marks = [90, 25, 67, 45, 80]

number = 0
for mark in marks:
    number = number + 1
    if mark < 60:
    	continue
    print("%d번 학생 축하합니다. 합격입니다." % number)

- 점수가 60점 미만인 학생은 continue 문이 수행되어 print 문을 수행하지 않고 for 문의 처음으로 돌아가게 됨

 

 

 

5) for 문과 range 함수

  • range() : 숫자 리스트를 자동으로 만들어 줌
>>> a = range(10)  # 0부터 10미만의 숫자를 포함하는 range 객체를 만듦
>>> a
range(0, 10)  # 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
  • for 문에 range 함수 사용하기
>>> add = 0
>>> for i in range(1, 11):
...     add = add + i
...
>>> print(add)
55
marks = [90, 25, 67, 45, 80]
for number in range(len(marks)):  #len() : 리스트 안의 요소 개수를 리턴하는 함수  # number 변수에 0~4의 숫자가 차례로 대입됨
    if marks[number] < 60:
        continue  # 점수가 60점 미만이면 맨 처음으로 돌아감
    print("%d번 학생 축하합니다. 합격입니다." % (number + 1))

 

  • for와 range를 이용한 구구단
>>> for i in range(2, 10):  # ← ①번 for 문
...     for j in range(1, 10):  # ← ②번 for 문
...         print(i*j, end=" ")  # end 파라미터 설정 : 수행 결과물(i*j) 사이에 간격 주기 위해 
...     print(' ')   # 2단, 3단,... 사이에 줄바꿈
...
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81

- ①번 for 문 : 2~9의 숫자가 차례로 변수 i에 대입됨

- ②번 for 문 : 1~9의 숫자가 차례로 변수 j에 대입됨

 

 

 

6) 리스트 컴프리헨션 사용

  • 리스트 컴프리헨션 문법
[표현식 for 항목 in 반복가능객체 if 조건문]
* if 조건문은 생략 가능
* for 문 2개 이상 사용 가능
[표현식 for 항목1 in 반복가능객체1 if 조건문1
             for 항목2 in 반복가능객체2 if 조건문2 
             ...
             for 항목n in 반복가능객체n if 조건문n]
  • 리스트 안에, for 문을 포함하는 리스트 컴프리헨션 list comprehension 사용 : 조건문 더미를 더 간단하게 적을 수 있음
# 리스트 컴프리헨션 사용전
>>> a = [1, 2, 3, 4]
>>> result = []
>>> for num in a:
...     result.append(num*3)  # append() : 리스트 맨 마지막에 요소값 추가
...     
>>> print(result)
[3, 6, 9, 12]
# 리스트 컴프리헨션 사용후
>>> a = [1, 2, 3, 4]
>>> result = [num*3 for num in a]
>>> print(result)
[3, 6, 9, 12]
# 리스트 컴프리헨션 안에 if 문 추가 : 짝수에만 3을 곱할 수 있게됨
>>> a = [1, 2, 3, 4]
>>> result = [num*3 for num in a if num%2 == 0]
>>> print(result)
[6, 12]
  • 구구단의 모든 결과를 리스트에 담고 싶을 때; 리스트 컴프리헨션으로 구현 가능
>>> result = [x*y for x in range(2, 10)
...               for y in range(1, 10)]
>>> print(result)
[2, 4, 6, 8, 10, 12, 14, 16, 18, 3, 6, 9, 12, 15, 18, 21, 24, 27, 4, 8, 12, 16,
20, 24, 28, 32, 36, 5, 10, 15, 20, 25, 30, 35, 40, 45, 6, 12, 18, 24, 30, 36, 42,
48, 54, 7, 14, 21, 28, 35, 42, 49, 56, 63, 8, 16, 24, 32, 40, 48, 56, 64, 72,
9, 18, 27, 36, 45, 54, 63, 72, 81]

 

 

 

 

 

출처 : ⎡Do it! 점프 투 파이썬 (박응용)

'Python > 03. 프로그램의 구조를 쌓는 제어문' 카테고리의 다른 글

03-2 while 문  (1) 2024.07.14
03-1 if 문  (0) 2024.07.13