본문 바로가기

미래 먹거리를 위하여

[파이썬 정복하기] 점프 투 파이썬 3장 – 프로그램의 구조를 쌓는다! 제어문 (책 없이 시작하기)

3. 프로그램의 구조를 쌓는다! 제어문

자료형을 바탕으로 제어문을 이용하여 프로그램의 구조를 만들어 보자.

3-1. if 문

f문은 조건의 참/거짓에 따라 프로그램의 흐름을 제어하는 핵심 제어문이.
들여쓰기와 콜론(:)은 필수 문법 요소이며, elif, else로 조건을 확장할 수 있다.

구분 설명 예시 결과
기본 구조 조건이 참(True)일 때만 코드 실행 if 조건문: 실행문 조건이 거짓이면
실행 안 함
예시   if True:
    print("참")
조건문 뒤 콜론( : ) if문 문법상 필수, 블록 시작 의미 if x > 0: 콜론 필수
들여쓰기
(Indentation)
조건이 참일 때 실행할 문장은
반드시 들여쓰기 해야 함
if x > 0:
   print(x)
들여쓰기 틀리면 오류
else 문 조건이 거짓일 때 실행되는 블록 if x > 0:
    print("양수")
else:
      print("음수")
하나만 선택 실행
elif 문 여러 조건을 순서대로 검사 if x > 0:
    print("양수")
elif x == 0:
     print("0")
else:
      print("음수")
위에서부터 검사 후 첫 True 실행
중첩 if문 if문 안에 if문 포함 가능 if x > 0:
if x < 10:
    print("한 자리 양수")
조건 중첩 가능
조건 표현식 (한 줄 if) 간단한 조건문을 한 줄로 표현 a = "양수" if x > 0 else "음수" 삼항 연산처럼 동작
비교 연산자 <, >, ==, !=, >=, <= if a != b: True/False 판단
a와 b가 같지 않다.
논리 연산자 and, or, not if x > 0 and y < 10: 조건 조합
in / not in 연산자 포함 여부 판단 ① if 'a' in ['a','b','c']:
'j' not in 'python'
① True
 True
pass 문 실행할 내용이 없을 때 자리만 유지 if x < 0:
    pass
아무 일도 안 함

3-2 while문

while문은 조건이 참인 동안 계속 반복하며, 반복 중 조건 변화가 없으면 무한루프에 빠질 수 있다.
break, continue, else를 함께 사용하면 유연하게 제어 가능.

구분 설명 예시 결과/참고
기본 구조 조건이 참(True)인 동안
문장을 반복 실행
while 조건문:
          실행문
조건이 거짓(False) 되면 종료
예시   i = 0
   while i < 3:
            print(i)
                 i += 1
0 1 2 
무한 루프 조건이 항상 참이면 계속 반복 while True:
           print("hi")
Ctrl + C 로 중단
조건식
생략 주의
while: 만 쓰면 오류
반드시 조건 필요
SyntaxError 발생  
break문 반복 중간에 강제 종료 while True:
        if x == 5:
        break
조건 만족 시 루프 탈출
continue문 이후 코드 건너뛰고
다음 반복으로 이동
for i in range(5):
      if i == 2: continue
         print(i)
2만 출력 생략
무한루프
활용 예
사용자 입력 반복 while True:
           input_data = input()
       if input_data == 'exit':
              break
'exit' 입력 시 종료
while + else while문이 정상 종료될 때
(=break 없이) else 실행
 i = 0
    while i < 3:
              i += 1
       else:
             print("끝")
조건 False로 종료 시 "끝" 출력
변수 제어 주의 반복 조건에 영향을 주는
변수 변경 필수
i += 1 누락 시 무한루프 조건 변화 없으면 종료 안 됨

3-3. for문

for문은 문장 구조가 한눈에 들어온다. 

반복 가능한 객체(iterable)의 요소를 하나씩 꺼내 실행하는 제어문이며, range()와 함께 수치 반복, break/continue/else로 제어, 리스트 내포로 간결한 리스트 생성이 가능하다.

구분 설명 예시 결과
기본 구조 시퀀스(리스트, 튜플, 문자열 등)의 요소를 하나씩 꺼내 반복 for 변수 in 리스트(또는 튜플, 문자열):
       실행문
각 원소를
순서대로 변수에 대입
기본 예시   for i in [1, 2, 3]:
      print(i)
1 2 3 
문자열 반복 문자열의 각 문자 반복 for ch in "Hi":
      print(ch)
H, i
튜플, 딕셔너리 반복 튜플은 원소 단위로,
딕셔너리는 기본적으로 키를 반복
for key in {'a':1, 'b':2}:
      print(key)
a, b
딕셔너리
key/value 동시 반복
.items() 사용 for k, v in a.items():
      print(k, v)
a 1, b 2
range() 함수 일정한 범위의 숫자 생성 for i in range(3):
      print(i)
0 1 2
range
(start, end, step)
시작~끝-1까지, 간격 지정 가능 range(1,10,2) 1,3,5,7,9
합계 구하기 예시   total = 0
for i in range(1, 11):
     total += i
print(total)
1부터 11까지의 합
= 55
중첩 for문 for문 안에 for문 가능 for i in [1,2,3]:
for j in [4,5,6]:
      print(i,j)
1,2,3,4,5,6
break 반복 도중 조건 만족 시 즉시 탈출 for i in range(10):
if i == 5:
        break
0
1
2
3
4
continue 해당 반복만 건너뛰고 다음으로 진행 for i in range(5):
 if i==2:
continue
     print(i)
0,1,3,4
for + else 반복이 정상 종료되면 else 실행
(break로 중단 시 else 미실행)
for i in range(3):
     print(i)
else: print("끝")
0 1 2 끝
리스트 내포
(List Comprehension)
간결하게 리스트 생성 [x*2 for x in [1,2,3]] [2,4,6]
리스트 내포 + 조건문 조건을 만족하는 원소만 포함 [x for x in range(10) if x % 2 == 0] [0,2,4,6,8]