01_Python

35_제어문>for문

chuuvelop 2025. 1. 7. 13:34
728x90
01. for문
  • 값의 범위나 반복 횟수가 정해져 있을 때 주로 사용하는 반복문
  • 반복 가능 객체 : 문자열, 리스트, 튜플, range, 세트, 딕셔너리
for 변수 in 반복가능객체:
                 반복실행문

 

# 리스트에 있는 요소 하나하나가 i라는 변수에 들어가며, 차례차례 반복
test = ["one", "two", "three"]

for i in test:
    print(i)
one
two
three

 

# for 반복문은 문자열을 함께 사용할 수도 있음
for char in "안녕하세요":
    print(char)
안
녕
하
세
요

 

 

# 5명의 학생이 시험을 보았는데 시험 점수가 60점을 넘으면 합격이고 그렇지 않으면 불합격
# 학생들의 시험점수를 차례로 검사해서 합격인지 불합격인지 통보해주는 프로그램 만들기

scores = [90, 25, 67, 45, 80]
number = 0

for score in scores:
    number += 1

    if score >= 60:
        print(f"{number}번 학생은 합격입니다")

    else:
        print(f"{number}번 학생은 불합격입니다")
1번 학생은 합격입니다
2번 학생은 불합격입니다
3번 학생은 합격입니다
4번 학생은 불합격입니다
5번 학생은 합격입니다

 

 

02. for문 중첩
  • 일반적으로 n차원 처리를 할 때 사용
    • 리스트가 한 겹으로 감싸지면 1차원 리스트
      • [1, 2, 3]
    • 리스트가 두 겹으로 감싸지면 2차원 리스트
      • [[1, 2, 3], [4, 5, 6]]
    • 위와 같은 n차원 리스트 요소를 모두 확인하려면 반복문을 n번 중첩해야함
over_list = [
    [1, 2, 3],
    [4, 5, 6, 7],
    [8, 9]
]

for items in over_list:
    for item in items:
        print(item)
1
2
3
4
5
6
7
8
9

 

03. continue
scores = [90, 25, 67, 45, 80]
number = 0

for score in scores:
    number += 1

    if score < 60:
        continue

    print(f"{number}번 학생은 합격입니다")
1번 학생은 합격입니다
3번 학생은 합격입니다
5번 학생은 합격입니다

 

 

04. range
  • 수열을 자동으로 만들어주는 함수
  • range(시작값, 종료값, 증감값)
for i in range(1, 11, 1):
    print(i, end = " ")
1 2 3 4 5 6 7 8 9 10 

 

for i in range(1, 11, 2):
    print(i, end = " ")
1 3 5 7 9 

 

for i in range(1, 11): ##증감값은 생략 가능
    print(i, end = " ")
1 2 3 4 5 6 7 8 9 10 

 

for i in range(10): ##시작값 생략하면 0이 자동으로 들어감
    print(i, end = " ")
0 1 2 3 4 5 6 7 8 9 

 

 

# 연습문제: 1부터 10까지의 자연수의 합

##while을 이용
score = 1
result = 0
while score <= 10:
    result += score
    score += 1
    

print(result)


##for를 이용
result = 0
for i in range(1, 11):
    result += i
    
print(result)

##풀이
#############################
tot = 0

for i in range(1, 11):
    tot += i

print(tot)

 

55
55
55

 

 

##구구단 2단부터 9단까지 출력되는 코드

# 2 * 1 = 2
# ...
# 9 * 9 = 81

dan = 2
for dan in range(2, 10):
    for gugu in range(1, 10):
        print(f"{dan} * {gugu} = {dan * gugu}")

 

2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
2 * 4 = 8
2 * 5 = 10
2 * 6 = 12
2 * 7 = 14
2 * 8 = 16
2 * 9 = 18
3 * 1 = 3
3 * 2 = 6
3 * 3 = 9
3 * 4 = 12
3 * 5 = 15
3 * 6 = 18
3 * 7 = 21
3 * 8 = 24
3 * 9 = 27
4 * 1 = 4
4 * 2 = 8
4 * 3 = 12
4 * 4 = 16
4 * 5 = 20
4 * 6 = 24
4 * 7 = 28
4 * 8 = 32
4 * 9 = 36
5 * 1 = 5
5 * 2 = 10
5 * 3 = 15
5 * 4 = 20
5 * 5 = 25
5 * 6 = 30
5 * 7 = 35
5 * 8 = 40
5 * 9 = 45
6 * 1 = 6
6 * 2 = 12
6 * 3 = 18
6 * 4 = 24
6 * 5 = 30
6 * 6 = 36
6 * 7 = 42
6 * 8 = 48
6 * 9 = 54
7 * 1 = 7
7 * 2 = 14
7 * 3 = 21
7 * 4 = 28
7 * 5 = 35
7 * 6 = 42
7 * 7 = 49
7 * 8 = 56
7 * 9 = 63
8 * 1 = 8
8 * 2 = 16
8 * 3 = 24
8 * 4 = 32
8 * 5 = 40
8 * 6 = 48
8 * 7 = 56
8 * 8 = 64
8 * 9 = 72
9 * 1 = 9
9 * 2 = 18
9 * 3 = 27
9 * 4 = 36
9 * 5 = 45
9 * 6 = 54
9 * 7 = 63
9 * 8 = 72
9 * 9 = 81

 

 

05. for반복문과 딕셔너리 조합
  • for반복문과 딕셔너리를 조합하면 딕셔너리의 키가 변수로 들어감
dict1 = {"name" : "건조 망고",
        "type" : "당 절임", 
        "ingredient" : ["망고", "설탕", "나트륨", "색소"], 
        "origin" : "필리핀"}

for key in dict1:
    print(key)
    print(dict1[key])
    print("-" * 10)
name
건조 망고
----------
type
당 절임
----------
ingredient
['망고', '설탕', '나트륨', '색소']
----------
origin
필리핀
----------

 

dict1["name"]
'건조 망고'

 

 

 

06. enumerate함수
  • 리스트의 요소를 반복할 때 요소의 인덱스를 함께 반환
  • 현재 인덱스가 몇 번째인지 확인하고 싶은 경우 사용
example_list = ["요소1", "요소2", "요소3"]

for idx, value in enumerate(example_list):
    print(f"{idx}번째 요소는 {value}입니다")
0번째 요소는 요소1입니다
1번째 요소는 요소2입니다
2번째 요소는 요소3입니다

 

 

07. 리스트 내포(List comprehension)

- 실행 시간이 줄어듦

 

%%timeit 
##쥬피터에서만 제공, 셀 실행 시간을 계산
result1 = []

for num in range(10):
    result1.append(num * 3)

# print(result1)
475 ns ± 7.15 ns per loop (mean ± std. dev. of 7 runs, 1,000,000 loops each)

 

 

%%timeit
result2 = [num * 3 for num in range(10)]

# print(result2)
370 ns ± 3.04 ns per loop (mean ± std. dev. of 7 runs, 1,000,000 loops each)

 

result = [num * 3 for num in range(10) if num % 2 == 0]

print(result)
[0, 6, 12, 18, 24]
728x90

'01_Python' 카테고리의 다른 글

37_제어문>for반복문과 딕셔너리 조합  (0) 2025.01.08
36_제어문>제어문 연습(1)  (2) 2025.01.07
34_제어문>while문  (0) 2025.01.07
33_제어문>조건부 표현식  (0) 2025.01.07
32_제어문>pass  (1) 2025.01.07