Yozzang의 해킹일기 💻
article thumbnail
Published 2022. 3. 26. 02:47
[Python] 프로그램 실행 제어 Python
728x90

이번 포스트에서는 파이썬의 프로그램 실행 제어에 대해서 다뤄보도록 하겠습니다.

프로그램 실행 제어란 무엇인가?

파이썬의 프로그램 실행 제어는 프로그램 실행 중간의 다양한 상황에 따라 다른 기능을 수행할 수 있도록 구성된 것입니다. 대표적인 예시로는 조건식(conditional expression), 조건문(conditional statement), 반복문(while-loop, for-loop), 예외처리가 있습니다.

 

기본적으로 조건식을 만들기 위해서 필요한 것이 바로 연산자라는 것입니다. 다음은 조건식 관련 연산자들을 정리해놓은 표입니다.

연산자의
분류
연산자 의미
관계 연산자 (relationship) > a > b : a가 b보다 크면 True, 아니면 False
>= a >= b : a가 b보다 같거나 크면 True, 아니면 False
< a < b : a가 b보다 작으면 True, 아니면 False
<= a <= b : a가 b보다 같거나 작으면 True, 아니면 False
== a == b : a와 b가 같으면 True, 아니면 False
!= a != b : a와 b가 다르면 True, 아니면 False
논리 연산자
(logical)
and (논리 곱) A and B : A와 B가 모두 True이면 True, 아니면 False
or (논리 합) A or B : A나 B 둘 중 하나가 True이면 True, 아니면 (즉, A와 B 모두 False이면) False
not (논리 역) not A : A가 True이면 False, A가 False이면 True
Ternary
selection
x if condition else y 조건에 따라 선택
max = x if x > y else y;
(만약 x가 y보다 크면 x를 선택, 아니면 y를 선택)

이어서 파이썬의 조건문에 대해서 배워보겠습니다. 파이썬에서의 조건문은 크게 if, if-else, if-elif-else로 나눌 수 있습니다. 각각의 로직은 다음 그림과 같습니다.

if, if-else, if-elif-else

즉 if에는 첫번째 경우, elif에는 그 다음 경우, else에는 if와 elif를 제외한 모든 경우를 의미한다.

 

다음과 같은 요구사항이 있다고 가정하자.

90점 이상이면 A, 80점 이상이면 B, 그 외는 전부 C학점을 준다.

이는 파이썬의 조건문으로 구현하면 다음과 같습니다.

score = int(input("What's your score: "))
if score > 90:
	print("A")
elif score > 80:
	print("B")
else:
	print("C")

여기서 score에 100을 입력하고 실행해보면

A라는 값이 출력된 것을 확인할 수 있습니다.

 

이어서 파이썬의 반복문에 대해서 배워보겠습니다. 앞서 설명했듯이 파이썬의 반복문은 크게 while-loopfor-loop로 분류할 수 있다고 했습니다. 우리는 이것을 흔히 "while문"과 "for문"이라고도 부릅니다.

 

while 반복문의 기본 구조는 다음과 같습니다.

  • 조건식에서 사용되는 조건의 초기값 설정
  • 조건식이 만족하는 동안 while문 실행
  • while문 내부에서 조건식의 update가 반드시 있어야 함

간단한 예제를 통해 while문을 보겠습니다.

L = list() # 리스트 생성
print("Input integers (-1 to end)") # 코드 내용 출력
x = int(input("data : ")) # 사용자로부터 입력을 받아 x변수에 저장
count = 0 # count를 0으로 초기화
while x >= 0: # 사용자가 입력한 x값이 0보다 클 때 무한 반복
    L.append(x) # L리스트에 x값 추가
    count += 1 # count를 1 증가
    x = int(input("data : ")) # 다시 사용자로부터 입력을 받아 x변수에 저장
print(f"Input data : {L}") # 리스트 내용 출력

코드에 주석문을 추가했지만 간단히 설명하자면 사용자로부터 입력을 계속 받아서 리스트에 저장하는 코드입니다.. 단 사용자가 0보다 작은 수를 입력하면 즉시 종료합니다.

 

코드 실행 결과는 다음과 같습니다.

또한 while문을 구성할 때 그 내부에 breakcontinue를 사용해서 while문을 빠져나오거나 나머지 내용을 생략하게 할 수도 있습니다.

 

break와 continue에 대한 정리는 다음과 같습니다.

반복문 설명
condition initialize
while condition:
      statements
      condition update
- 먼저 while 반복문 조건식의 초기화를 실행
- 조건식의 연산 결과가 True이면 while 반복문 실행
- while 반복문 내에서 조건식을 update
while condition1:
      if condition2:
            break
      if condition3:
            continue
      statements
- 만약 condition1이 True이면 while 반복문 실행
- 만약 condition2가 True이면 while 반복문을 중단하고 빠져 나감
- 만약 condition3이 True이면 continue 이후 구간을 생략하고 while 반복문 계속 실행

 

마지막으로 for 반복문에 대해서 배워보겠습니다.

 

for 반복문의 기본 구조는 다음과 같습니다.

  • 변수가 지정된 영역에 있는 경우 반복문 수행
  • 변수는 반복문을 실행할 때마다 갱신되어야 함
  • 변수가 주어진 조건을 만족하지 않을 때 for 반복문을 벗어남

간단한 예제를 통해 살펴보겠습니다.

n = int(input("Input n to calculate sum of [0..n] : ")) # 사용자로부터 입력을 받아 n변수에 저장

n_sum = 0 # n의 총합을 0으로 초기화

for i in range(0, n + 1): # for문을 0(첫 번째 인자) ~ n + 1(두 번째 인자) - 1까지 수행, 그 값을 i에다가 넣음
    n_sum += i # n_sum 변수에 i값을 추가

print(f"Sum of [0..{n}] = {n_sum}") # 총합 출력

주석문에 보태 좀 더 설명하자면 for문을 만드는데, 범위는 0부터 (n + 1) - 1까지입니다. 그러면 n을 10이라고 가정하면 for문은 차례대로 0, 1, 2, 3, ..., 10까지 증가하게 됩니다. 그리고 0~10까지는 i라는 변수에 들어가게 됩니다. 즉, 첫 번째 for문: i = 0, 두 번째 for문: i = 1, ..., 열한 번째 for문: i = 10입니다.

 

실제 코드를 실행하고 10을 넣은 결과는 다음과 같습니다. 

또한 for문에서도 while문처럼 breakcontinue를 사용할 수 있습니다.

 

for문에서의 break와 continue에 대한 정리는 다음과 같습니다.

반복문 설명
for n in sequence_type_object:
      statements
- 시퀀스 객체에 있는 원소들을 차례로 사용하면서 for 반복문을 실행
for n in sequence_type_object:
      if condition1:
            break
      if condition2:
            continue
      statements
- 시퀀스 객체에 있는 원소들을 차례로 사용하면서 for 반복문을 실행
- 만약 condition1이 True이면 for 반복문을 중단하고 빠져 나감
- 만약 condition2가 True이면 continue 이후 구간을 생략하고 for 반복문 계속 실행

 

profile

Yozzang의 해킹일기 💻

@요짱

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!