파이썬 독학/입문 강의

[파이썬독학강의] 11. 파이썬 if문 - 제어문

데니 by danny 2023. 3. 28. 01:23
반응형

파이썬 if문
파이썬 if문

 

님들 안녕하세요. 14년 차 IT 개발자 데니예요. 지난 강의에서는 프로그램에서 필요한 변수와 자료형에 대해서 배우셨어요. 이번 시간부터는 프로그램의 기본 구조에 대해서 학습하실 거예요. 변수와 자료형이 프로그램의 살이라면, 기본 구조는 프로그램의 뼈대라고 생각하시면 돼요. 자 그럼 파이썬 if문 강의 시작해 볼게요.

 

 

 

11. 파이썬 if문

 

if문은 모든 프로그래밍 언어에서 사용하며 프로그램의 제어문 중 하나예요. 제어문이란 프로그램 내에 조건에 따라 명령문 순서를 제어하고 반복시키는 역할하는 구조라고 할 수 있어요. 조건에 따라 명령문 순서를 제어하는 if문, 조건에 따라 명령문 수행을 반복시켜 주는 for문과 while문이 존재해요. 이번 장에서는 if문을 학습해 볼 거예요.

 

 

  ▶ if문의 기본구조

 

아래 그림은 파이썬 if문의 기본 구조예요. if 글자 다음에 반드시 조건문이 와야 해요. 조건문에는 비교 연산자 포함 조건문,  논리 연산자 포함 조건문, in 포함 조건문, not in 포함 조건문이 있어요. 다음 단계에서 학습하시게 될 거예요. 아래 그림처럼 if 조건문: 다음 줄에는 반드시 수행할 문장이 와야 해요. 아래 그림처럼 if조건문 옆에 반드시 콜론( : )을 붙여야 해요. 또한, 수행할 문장은 if문에 속한다는 의미로 들여 쓰기를 해줘야 해요.

조건문이 True(참)이면 if문에 속하는 수행할 문장 1, 2, 3, ...이 수행될 거예요. 조건문이 False(거짓)이면 if문에 속하는 수행할 문장 1, 2, 3, ...을 수행하지 않고 건너뛰게 돼요.

 

파이썬 if문 기본 구조조건문이 True(참)인 경우만 아래 문장 수행 1. 조건문 다음에 반드시 콜론( : )를 붙여야 함. 2. if에 속하는 문장은 들여쓰기를 해야 함.
(좌측부터) 1. 파이썬 if문 기본 구조, 2. if 조건문이 True이면 if문에 속하는 문장 수행, False이면 수행하지 않고 건너 뜀, 3. 조건문 다음에 반드시 콜론(:) 필수. if문 내 수행할 문장은 들여쓰기 필수

위 그림과 설명 내용에 대해서 실습을 통해서 알아보는 시간을 가져볼게요.

 

1
2
3
4
5
6
>>> a = 10
>>> if a > 5:
...     print(f'변수 a의 값은 5보다 크다')
...
변수 a의 값은 5보다 크다
>>>
cs

 

라인[1]은 변수 a에 숫자 10을 대입했어요.

라인[2]는 if문을 사용했어요. if문 옆에 조건문 a> 5를 사용하였고 콜론( : )을 붙여 주었어요.

라인[3]은 들여 쓰기가 되었으므로 라인[2]에서 입력한 if문 내에 속하여 조건문이 True인 경우 수행하는 문장을 입력했어요.

라인[5]는 if문에 속하는 문장이 수행되어 출력된 결과예요. 해당 문장이 출력된 걸로 보아 a > 5 조건문이 True인 걸 알 수 있어요.

 

 

아래 실습 코드는 위 실습에서 선언한 변수 a를 그대로 사용해요.

 

1
2
3
4
>>> if a < 5:
...     print(f'변수 a의 값은 5보다 작다')
...
>>>
cs

 

라인[1]은 if문을 사용했어요. if문 옆에 조건문 a<5를 입력했고 그 옆에 콜론( : )을 붙여 주었어요.

라인[2]는 if 조건문이 True인 경우 수행될 문장을 입력했어요.

if문 내 수행할 문장이 수행되지 않고 프로그램이 종료되었어요. a<5 조건문이 False(거짓)이므로 if문에 속하는 문장을 수행하지 않고 건너뛰었어요. 이처럼 if 조건문이 True이면 if문에 속한 문장이 수행되고, 그렇지 않으면 건너뛰게 된다는 사실을 확인할 수 있어요.

 

 

아래 실습 코드는 위 실습에서 선언한 변수 a를 그대로 사용해요.

 

1
2
3
4
5
>>> if a > 7 and a < 11:
...     print(f'변수 a의 값은 7보다 크고 11보다 작다')
...
변수 a의 값은 7보다 크고 11보다 작다
>>>
cs

 

라인[1]은 if문을 사용했어요. if문 옆에 조건문 a>7 and a<11을 입력했고, 그 옆에 콜론( : )을 붙여 주었어요. 조건문 a > 7 and a < 11는 7 < a < 11 과 바꾸어 표현할 수 있어요. 즉, a > 7과 a < 11인 두 조건이 모두 True(참)이여야 결과가 True(참)인 조건문이예요. 여기서 and를 논리 연산자라고 해요.

라인[2]~[4]는 라인[1]에서 정의한 조건문인 a>7과 a<11 조건이 모두 True이므로 if문 내에 속한 print문이 수행되었어요.

 

 

  ▶ 비교 연산자 조건문

 

조건문에서 사용하는 비교 연산자를 아래 표처럼 정리해 보았어요. 위 if문 실습에서는 > (크다), < (작다)만 사용하였지만 아래 표처럼 값의 크기를 비교하는 연산자를 조건문에서 사용할 수 있어요. 비교 연산의 결과는 True(참)나 False(거짓)이 될 거예요.

 

비교 연산자 정리
비교 연산자 정리

 

아래는 비교 연산자에 대한 실습이에요. 그냥 가볍게 눈으로 보시면 쉽게 읽히고 이해되실 거예요.^^ 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
>>> x = 10
>>> y = 5
>>>
>>> x > y
True
>>> x < y
False
>>> x >= y
True
>>> x <= y
False
>>> x == y
False
>>> x != y
True
>>>
cs

 

 

  ▶ 논리 연산자 조건문

 

조건문에서 사용하는 논리 연산자를 아래 표처럼 정리해 보았어요. 위 실습에서 and 논리 연산자만 사용하였지만, 아래 표처럼 두 조건의 논리를 판단하는 조건문에 논리 연산자를 사용할 수 있어요.

 

논리 연산자 정리
논리 연산자 정리

 

실습을 통하여 논리 연산자 사용법을 익혀보아요.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
>>> x = 10
>>> y = 5
>>>
>>> (x > y) or (x == 10)
True
>>> (x < y) or (x == 10)
True
>>> (x < y) or (x == 5)
False
>>> (x > y) and (x == 10)
True
>>> (x < y) and ( x == 10)
False
>>> not x == 5
True
>>> not x == 10
False
>>>
cs

 

라인[4]는 True or True이므로 결과는 True예요.

라인[6]은 False or True이므로 결과는 True예요.

라인[8]은 False or False이므로 결과는 False예요.

라인[10]은 True and True이므로 결과는 True예요.

라인[12]는 False and True이므로 결과는 False예요.

라인[14]는 not False이므로 결과는 True예요.

라인[16]은 not True이므로 결과는 False예요.

 

 

  ▶ in, not in 포함 조건문

in, not in 연산자는 영어 의미 그대로 안에 있는지 없는지 존재 유무를 확인하는 연산자예요. 

in 연산자는 확인하고자 하는 데이터가 있는 경우 True, 없는 경우 False를 반환해요.

not in 연산자는 확인하고자 하는 데이터가 없는 경우 True, 있는 경우 False를 반환해요.

어디 안에 있는 무엇의 존재 유무를 확인하는 것일까요?

답은 문자열, 리스트, 튜플, 딕셔너리 등 안에 요소 값으로 우리가 원하는 값이 있는지 없는지 존재 유무를 확인하는 거예요.


아래 실습을 통해서 in과 not in 연산자의 사용법을 확인해 보실게요.

 



1
2
3
4
5
6
7
 
>>> subject = ['Math''Science''English']
>>> 'Science' in subject
True
>>> 'History' in subject
False
>>> 'History' not in subject
True
cs

 

라인[1]은 subject 변수에 리스트를 생성하여 대입했어요.

라인[2]는 in 연산자를 사용하여 리스트 내 요소 값으로 Science가 존재하는지 확인하고 있어요. 해당 요소 값이 리스트 내에 존재하므로 True 값을 리턴 받았어요.

라인[4]은 History가 리스트 내 요소로 존재하는지 확인하고 있어요.  해당 요소 값이 존재하지 않으므로 False 값을 리턴 받았어요.

라인[6]은 History가 리스트 내 요소로 존재하지 않으므로 True를 리턴 받았어요.

 

 

  ▶ if 조건문: ... else: ... 문

 

위에서 우리가 처음 본 if문의 기본 구조에서 else: 부분이 추가되었어요.

if문의 기본 구조에서는 if 조건문: 이 True(참)인 경우 if문에 속한 문장을 수행하였고, False(거짓)인 경우 if문에 속한 문장을 수행하지 않고 건너뛰었어요.

if 조건문: ... else: ... 문에서는 if 조건문이 False(거짓)이면 else: 문에 속한 문장을 수행하도록 되어 있어요. 즉, if 조건문이 True(참)이면 if문에 속한 문장을 수행하고 else:문에 속한 문장은 수행하지 않을 거예요. 반대로 if 조건문이 False(거짓)이면 if문에 속한 문장은 수행하지 않고  else:문에 속한 문장을 수행 할 거예요.

 

if 조건문:...else:...문 구조
if 조건문:...else:...문 구조

 

정수에 대해서 홀수인지 짝수인지 출력해 주는 실습이에요.

 

1
2
3
4
5
6
7
8
9
>>> num = 10
>>> if num % 2 == 0:
...     print(f'변수 num의 값은 짝수입니다.')
... else:
...     print(f'변수 num의 값은 홀수입니다.')
...
변수 num의 값은 짝수입니다.
>>>
 
cs

 

라인[2]~[5]는 if 조건문에 짝수인지 판단하는 조건문을 사용했어요. num이 짝수이면 해당 if문에 속한 문장을 수행하여 짝수임을 출력해 주고, 홀수라면 else:문에 속한 문장을 수행하여 홀수임을 출력해 줄 것이에요.

 

  ▶ if 조건문1: ... elif 조건문2: ... else: ... 문

if조건문1: ... elif 조건문2: ... else: ...문은

조건문 1이 True이면 if 조건문1:에 속한 문장을 수행하고 if문을 빠져나가게 될 거예요. 만약 조건문1이 False라면 다음 elif 조건문2:로 진입하게 돼요. 조건문 2가 True이면 elif 조건문2:에 속한 문장을 수행하고 if문을 빠져 나가게 될 거예요. 만약 조건문2도 False라면 다음 elif 조건문N에 진입하게 될 거예요. elif 조건문N도 False라면 마지막 else: 에 속한 문장을 수행하고 if문을 빠져 나가게 돼요. 즉, 조건문이 True에 속한 문장을 수행하고 해당 if문을 빠져 나가게 되며, 만약 차례대로 진입한 조건문 결과가 모두 False여서 만족하는 조건문이 없다면 else:에 속한 문장을 수행하고 해당 if문을 빠져 나가게 돼요.

 

if 조건문:...elif 조건문:...else:...문
if 조건문:...elif 조건문:...else:...문 구조

 

 

수학 점수에 따라서 A, B, C, D, F학점으로 변환하여 출력해 주는 실습이에요.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
>>> my_math_score = 82
>>> math_grade = ''
>>>
>>> if my_math_score >= 90:
...     math_grade = 'A'   
... elif my_math_score >= 80 and my_math_score < 90:
...     math_grade = 'B'
... elif my_math_score >= 70 and my_math_score < 80:
...     math_grade = 'C'
... elif my_math_score >= 60 and my_math_score < 70:
...     math_grade = 'D'
... else:
...     math_grade = 'F'
...
>>> print(f'내 수학 학점은 {math_grade}입니다.')
내 수학 학점은 B입니다.
>>>
cs

 

라인[1]은 나의 수학 점수인 숫자 82를 my_math_score 변수에 대입했어요.

라인[2]는 나의 수학 학점을 저장하기 위한 용도로 math_grade 변수에 null 값을 대입했어요.

라인[4]~[13]은 조건문에 따라 A, B, C, D, F 학점이 math_grade 변수에 대입될 수 있도록  if...elif...else문을 만들었어요. my_math_score 변수 값이 82이므로 라인[4]의 if문은 False이므로 진입하지 않아요.  라인[6]의 elif문의 조건문에서 True 값이 리턴되어 해당 elif문에 속한 문장이 수행되고 math_grade 변수에 문자 'B'가 대입되고 if문을 빠져나와서 라인[15] 문장을 수행해요.

라인[15]는 math_grade 변수에 대입된 값이 문자 'B'이므로 내 수학 학점은 B입니다.를 출력해 주었어요.

 

 

 

님들 오늘은 파이썬 제어문 첫 번째 시간 if문을 살펴보았어요. 프로그래밍 언어에서 특히 제어문은 사용하면 할수록 그 실력이 고무줄 늘어나듯이 늘어 날거니 잠시 쉬는 시간을 가진 후에 실습 창에 여러분들이 if문과 논리 연산자 혹은 비교 연산자를 사용하여 머릿속에 떠오르는 것들을 구현해 보는 시간을 가져보시길 추천드릴게요. 오늘도 님들 너무 고생 많으셨어요. 다음 시간에는 반복문을 학습해 보는 시간을 가질 거예요. 다음 시간에 봬요.

 

 

 

 

반응형