프로그래밍 언어/python

[python 기초 2] 프로그램 제어 문법

이현찬 2023. 3. 2. 22:50
728x90

python뿐만 아니라 다른 프로그래밍 언어에서도 계산기 수준 이상으로 사용하기 위해서 반드시 숙달해야 하는 내용이 이번 포스팅에서 다룰 프로그램 제어 문법이다. 여기서 말하는 제어 문법은 1)조건문과 2)반복문이다. 적절한 조건문을 활용해 수행할 작업을 구분할 수 있고, 반복문을 통해 동일하거나 유사한 작업을 짧은 코드로 처리할 수 있다. 이 포스팅에서는 같은 indent 단계를 가진 몇 줄의 코드를 코드 블럭이라고 하겠다.

조건문 Conditional Statements

조건문은 조건에 따라 수행할 코드 블럭을 설정하는 역할을 한다. python에서는 if, elifelse가 있다. C 언어 등에서 존재하는 switch - case문은 최초 개발시부터 이후 python 개선 프로젝트에서도 논의가 되었지만 불필요하다고 판단해 구현하지 않았다고 한다.

구문 설명
if 조건문을 시작하기 위해 필수인 구문이고, if 뒤에 오는 조건을 만족하면 :
이후 한 단계 들여쓰기 된 코드들을 수행한다.
elif if의 조건이 거짓인 경우 판단할 다른 조건을 부여할 수 있는 구문이다. 필요가 없는 경우 생략할 수 있다.
else ifelif의 조건이 모두 거짓인 경우 수행하도록 하는 구문이다.
다른 조건을 모두 만족하지 않는 경우이기 때문에 따로 조건은 기입하지 않는다. 필요가 없는 경우 생략할 수 있다.

아래의 간단한 예시를 통해 이해해보자.


# 1. if ...
## x가 양수이므로 'x는 양수'가 print
x = 5
if x > 0: 
    print('X 는 양수')

# 2. if ... elif ...
## x가 0보다 크지 않으므로 elif 조건을 판단, 조건을 만족하므로 'X 는 0' print
x = 0
if x > 0:
    print('X 는 양수')
elif x == 0 :
    print('X 는 0')

# 3. if ... elif ... else
## x가 0보다 크지 않고, 0이 아니기 때문에 else의 'X는 음수'
x = -5
if x > 0:
    print('X 는 양수')
elif x == 0 :
    print('X 는 0')
else :
    print('X는 음수')

반복문 Loops

반복문은 같은 코드 블럭을 특정 조건을 만족할 때 까지 반복 실행하도록 명령하는 구문이다. python은 while문과 for문을 가지고 있다.

while문

while문은 주어진 조건을 만족하는 동안 코드 블럭을 반복 실행한다. python에서 0이 아닌 값을 조건으로 주어졌을 때 True로 인식하기 때문에 while 1:이나 while True:와 같은 형태로 무한 반복 loop를 만들어 사용하기도 한다.

i = 0

while i < 5:
    print(i)
    i += 1

이 코드에서 while 내부의 코드 블럭은 i값을 출력하고 그 다음 1을 더하는 코드 블럭을 반복 실행한다. 실행 결과는 0,1,2,3,4를 출력하고 마지막 실행에서 i가 5가 되기 때문에 while문의 i<5 조건을 만족하지 않아 뒤로 넘어가게 된다. 만약 아래와 같이 코드 블럭의 실행 순서를 바꾸면 실행 결과는 1,2,3,4,5를 출력하고 while문을 탈출하게 된다.

i = 0

while i < 5:
    i += 1
    print(i)

for문

for문은 반복 횟수를 알고 있을 때나 sequence 형태의 자료형(strings, list, tuple, dict 등)에서 순차적으로 하나의 요소를 반환받아 프로그램을 수행하는 데 사용된다. range(start, end, interval)과 함께 쓰여 숫자를 할당할 수 있고, enumeratezip을 사용해 조금 더 python스러운 프로그램을 작성할 수 있다. enumeratezip은 이번 과정의 목표를 벗어나는 내용이지만 검색해 사용 예를 학습하기를 추천한다.

아래의 예는 0부터 9까지 2간격으로 숫자를 출력하는 예시이다. range(start, end, step) 형태로 사용 할 때 start 값은 포함하지만 end값은 포함하지 않는다. start와 step은 생략할 수 있고 생략 시 start = 0, step = 1을 기본값으로 갖는다.

for i in range(0, 10, 2):
    print(i)

아래의 예는 List 자료형인 name의 요소를 하나씩 반환해 프린트하는 프로그램이다. 실행 결과는 'Kim', 'Lee', 'Park' 순서로 출력된다.

name = ['Kim', 'Lee', 'Park']

for n in name:
    print(n)

많은 경우 while문과 for문을 동일한 기능을 구현하는데 사용할 수 있지만 반복 횟수를 미리 지정할 수 없는 경우 while문

반복문 탈출 구문

조건을 만족하는 경우 반복문을 탈출할 수 있는 구문으로 breakcontinue가 있다. 반복문 내에서 break를 만나거나 continue를 만나면 해당 반복을 탈출한다. 둘의 차이점은 탈출 후 어디서 프로그램이 다시 어디서 시작되는지인데 break는 남은 반복을 모두 건너뛰고 완전히 탈출하지만, continue는 한 번의 반복만 건너뛰고 다음 반복부터 시작을 한다.

아래 코드는 i를 0부터 4까지 증가시키며 코드 블럭을 실행하는데, i가 3이 되는 순간 블럭 내 조건을 만족해 break를 실행하게 된다. 따라서 실행 결과는 0,1,2를 순서로 출력한 후 바로 'DONE'을 출력한다.

for i in range(5);
    if i = 3:
        break
    print(i)
print('DONE')

반면의 continue를 사용한 다음 코드는 똑같은 과정을 겪어 i가 3이 되는 순간 해당 반복만 건너뛰고 i가 4, 5가 되는 반복을 마저 수행한다. 따라서 실행 결과는 0,1,2,4,5를 출력하고 'DONE'을 출력한다.

for i in range(5);
    if i = 3:
        continue
    print(i)
print('DONE')

결론

이번 포스팅을 통해 프로그램 흐름을 제어할 수 있는 조건문과 반복문에 대해 학습했다. 프로그램의 가장 기본이 되는 내용으로 여기까지의 내용만 학습해도 프로그램이라고 부를 수 있는 코드를 작성할 수 있게 되었다.