본문 바로가기
[파이썬]/제어문

[파이썬][제어문] for문

by sung min_Kim 2023. 11. 6.
for 문

시퀀스나 반복 가능한 객체의 요소들을 순회하는 데 사용되는 제어문


for문

 

 for 문은 주어진 시퀀스(리스트, 튜플, 딕셔너리, 문자열 등)의 모든 요소를 순회하는 데 사용되는 반복문이다.


 for문 기본 형태
for 변수 in 시퀀스:
    수행할 문장1
    수행할 문장2
    ...

 여기서 시퀀스는 순회할 대상이고, 변수는 시퀀스의 각 요소를 참조하는 데 사용된다.

 


for문의 동작원리
li = [1, 2, 3, 4, 5]

for i in li:
    print(i) # 1 2 3 4 5 출력

 이 코드는 리스트인 li의 모든 요소들을 순회하면서, 각 요소를 변수 i에 할당하고 print(i)를 수행한다. 따라서 1 - 5까지의 숫자가 차례대로 출력된다.

 

  for문은 break문과 continue문을 같이 사용하여 반복문의 흐름을 제어할 수 있다. 

 

  • break문
- break문은 while 문에서의 역할과 동일하게 조건이 참일 경우 반복문을 완전히 종료하는 동작을 수행한다.
다음 코드는 숫자 1부터 10까지의 각 요소들을 순회하고 난 이후, 각 요소들의 값을 변수 i에 할당하고 if문을 수행한다.
if문은 변수 i가 5가 될 때, break문을 통해 반복문을 종료시킨다.
for i in range(1, 11):
    if i == 5:
        break
    print(i) # 1 2 3 4 출력

 

  • continue문
- continue문은 현재 반복을 건너띄고 다음 반복으로 넘어가는 동작을 수행한다. 
다음 코드는 위의 코드와 동일하나 continue 문을 사용하였다.
i가 5가 됐을 때, continue 문이 동작하고, 이는 5를 건너 띄고 다음 반복으로 넘어간다.
for i in range(1, 11):
    if i == 5:
        continue
    print(i # 5 를 제외한 1 - 10 출력

 


 for 문에 대한 몇 가지 예를 들어보자.

 

· * range() 함수 사용

 

 횟수를 기반으로 반복하고 싶은 경우, range() 함수를 활용하여 for문을 작성할 수 있다.

for i in range(1, 11):
    print(i) # 1 - 10 까지 각 요소 출력
li = [1, 2, 3, 4, 5]

for i in range(len(li)):
    print(i) # 0 - 4 까지 각 요소 출력

 

· 숫자 1부터 90까지 9의 배수 출력하기
li = []

for i in range(1, 91):
  if i % 9 == 0:
    li.append(i)
print(li) # 9 - 90 까지의 배수 출력

 

· 딕셔너리의 키와 값을 출력하기

 

 딕셔너리를 for문에 그대로 적용할 경우 for문은 딕셔너리의 키만 순회하여 해당 값을 변수에 할당한다. 따라서 아래 구문은 각 키 값을 k와 v변수에 할당하려고 시도하기 때문  ValueError 오류가 발생하게 된다.

dic = {'name' : 'kim', 'age' : 30}

for k, v in dic:
  print(k, v) # ValueError 오류 출력

 ∴ 딕셔너리의 키와 값을 출력하기 위해서는 items() 함수를 사용하여야 한다.

dic = {'name' : 'kim', 'age' : 30}

for k, v in dic.items():
  print(k, v) # name kim   age 30 출력

 

 keys() 함수를 사용하면 키 값을, values() 함수를 사용하면 벨류 값을 출력할 수 있다.

dic = {'name' : 'kim', 'age' : 30}

for k in dic.keys():
  print(k) # name   age 출력
  
for v in dic.values():
  print(v) # kim    30 출력

 

· 딕셔너리에서 출력한 키와 값을 리스트에 추가하기

 딕셔너리의 items() 함수는 키와 값을 함께 반환하는데, 이 두 정보가 변하지 않으면서도 하나의 정보로 묶어 주기 위해 튜플 형태로 반환한다.

 아래 구문의 경우 dic 내의 각 요소의 키와 값을 각 각 변수 k와 v에 할당하여 리스트인 user_list에 추가하려 한다.

이때, items() 함수는 키와 값을 튜플 타입으로 반환하기 때문에 TypeError 가 발생하게 된다.

user_list = []
dic = {'name' : 'kim', 'age' : 30}

for k, v in dic.items():
  user_list.append(k, v)
print(user_list) # TypeError 오류 출력

 append 메서드 내의 k와 v 함수를 튜플 ()로 묶어주면 정상적으로 출력이 되는 것을 확인할 수 있다.

user_list = []
dic = {'name' : 'kim', 'age' : 30}

for k, v in dic.items():
  user_list.append((k, v))
print(user_list) # [('name', 'kim'), ('age', 30)] 출력

 


 

for문에 대해 요약하자면 아래와 같다.

 

리스트, 딕셔너리, 튜플과 같은 시퀀스 혹은 반복 가능한 개체에 대해 코드 블록을 반복적으로 실행하고, 모든 요소를 순회한 이후 동작이 멈추게 된다.

 

앞서 알아보았던 if 문은 주어진 조건이 참인지 거짓인지 따라 코드 블록의 실행 여부를 결정하는 조건문이고,

while 문은 조건이 거짓이 될 때까지 코드 블록을 무한히 반복하는 반복문이다.

 

 각 각의 형태는 다르지만 모두 프로그램의 흐름을 제어하는 제어문이다.

 

여러 로직을 작성해 보고, 예제를 풀어가며 많은 노력을 기울여야 할 필요가 있겠다.

 

 

'[파이썬] > 제어문' 카테고리의 다른 글

[파이썬][제어문] while 문  (0) 2023.11.06
[파이썬][제어문] if문  (0) 2023.11.06