[03주차] 조건문

Sung-E-Gkoght·2022년 11월 29일
0

HYAI - Python class

목록 보기
16/17
post-thumbnail

0. flow control

프로그램에는 실행에 순서가 있습니다. Python도 보통 위에서부터 아래로, 차례대로 실행하죠. 프로그램의 실행 순서나 흐름을 flow control(또는 flow of control)이라고 합니다. Python은 순차적인 flow control을 바꾸기 위해 if문(statement)과 while 문(statement)을 제공합니다. if문은 조건문의 일종이고 while은 반복문의 일종입니다.

물론 반복문인 while을 flow control 변경에 사용하는 경우는 거의 없습니다. 보통은 조건문으로 해결하죠. 이 글에서 다룰 내용은 "조건문이 무엇인가"입니다.

1. 조건문

조건문이란 무엇일까요.

조건문은 특정 조건과 그 조건일때만 실행되는 코드를 의미합니다.

여기서 조건의 결과는 Boolean입니다. 만약 조건이 True라면 실행하고, False라면 실행하지 않죠. 대다수의 경우에 조건은 논리식이지만, 때때로 논리식이 아닐 수도 있기 때문에 단순히 조건이라고 하도록 하겠습니다.

그 조건일때만 실행되는 코드는 블록(block)입니다. 일반적으로 조건문, 반복문, 함수는 " : "를 사용하는데, " : " 를 적고 다음줄부터 코드를 작성할 때는 들여쓰기가 필요합니다. 이때 그 다음줄부터 들여쓰기가 끝날 때까지(dedent, indent의 반대) 작성되는 걸 우리는 "블록(block)"이라고 부릅니다.

Python은 '만약'이라는 부분을 'if'라는 keyword를 사용합니다. keyword란 이미 특정한 기능을 수행하도록 정해진 문법의 일부입니다. 이 keyword로는 변수의 이름을 정할 수 없습니다.

조건문의 기본적인 형태입니다. 'if'를 통해 a가 b보다 클 경우 a를 출력하는 조건문입니다. 조건에 맞지 않다면 블록의 내용은 넘어갑니다.
이때 a는 b보다 작기 때문에 a > b는 False, print(a)는 실행되지 않습니다.

이번에는 'else'라는 keyword를 추가했습니다. 'else'로 서술하는 조건문은 'if'나 아래에서 볼 'elif'의 조건에 해당하지 않은 나머지 모든 경우에 대해 서술하는 조건문입니다. 기억해야 할 것은 자기 위에 있는 조건입니다.
여기서는 'if'의 논리식(a > b)에 해당하지 않는 모든 경우가 a <= b 이므로 print(a)가 성립하겠네요.
다만 else는 '그 외 나머지'의 개념이기 때문이라 조건을 적지 않습니다. (#는 주석)


그런데 조건문을 더 세분화할 수 있습니다. 'elif' keyword는 else와 if의 결합이라고 볼 수 있습니다. "else의 경우 중에서 if의 조건에 해당하는 경우"입니다. 여기서 elif 조건문은 a > b가 아닌 나머지 a <= b 중에서 a < b인 경우일 때 print(b)가 실행되는 것입니다.
! 그리고 여기서 else는 자기 위에 있는 모든 조건에 벗어나는 경우이므로 a > b도 아니고, a < b도 아닌 경우입니다. 여기서 남은 경우는 a = b 뿐이네요.


코드로 보면 다음과 같습니다.

a = 1
b = 2
if (a > b):
	print(a)
elif (a < b):
	print(b)
else:
	print(a)

주의하셔야 할 것은 들여쓰기를 잘 맞춰야 합니다.

https://wikidocs.net/20#_1

위에는 블록(block)에 잘못된 들여쓰기가 없습니다. if의 블록인 print(a), elif의 블록인 print(b), print(a)의 블록인 print(a) 모두 들여쓰기가 되어 있습니다 (블록이 한 줄짜리 코드만 되는 건 아닙니다). 그리고 if, elif, else 끼리도 들여쓰기에 문제가 없습니다.

하지만 아래는 일정하지 못한 들여쓰기가 에러를 일으킵니다. (보통 들여쓰기는 일정하게 넣기만 하면 문제가 없습니다)

참고로 조건문은 해당 조건에 알맞는 걸 실행하면, 다른 조건문은 확인하지 않습니다. 그림에서 elif가 맞다면 해당 내용을 실행하고 그 아래 else 조건문은 확인하지 않습니다.

2. 이중 조건문


딱히 더 특별한 것은 없습니다. 조건문 안에 조건문이 있는 형태이기 때문입니다.

조건문의 내용으로 조건문이 있는 형태입니다. 위의 사진은 a > c를 실행해서 True값이 나왔기 때문에 아래 블록을 실행하는데, 블록의 내용이 다시 조건문으로 되어 있습니다. 마찬가지로 a > b이기 때문에 print(a)를 실행하고 모든 조건문(첫 번째 if가 성공, 두 번째 if가 성공)이 종료되었습니다.

profile
Sung-E-Gkoght

0개의 댓글