이 글은 한빛미디어의 ⟪혼자 공부하는 파이썬 2019 개정판⟫을 참고하여 작성되었음을 알려드립니다.
프로그래밍 언어에는 기본적인 자료형으로 참과 거짓을 나타내는 값이 있다. 이를 불린(Boolean), 줄여서 불이라고 부른다. 부울 대수의 부울이 바로 이것이다.
불은 오직 True(참)와 False(거짓) 값만 가질 수 있다.
불은 비교 연산자를 통해 만들 수 있다.
연산자 | 설명 |
---|---|
== | 같다 |
!= | 다르다 |
< | 작다 |
> | 크다 |
<= | 작거나 같다 |
>= | 크거나 같다 |
비교 연산자는 숫자 또는 문자열에 적용할 수 있는데, 파이썬에서는 숫자와 문자열에 모두 적용할 수 있다. 대소 비교는 이해하기 쉬우니 생략하고, 문자열 비교 예제만 들어보도록 하겠다.
문자열 비교에서 한글은 사전 순서(가나다순)로 앞에 있는 것이 작은 값을 갖는다. 예를 들어, '기계학습'과 '파이썬'을 비교하면 '기계학습'이 '파이썬'보다 작은 값을 갖는 것이다.
>> print("기계학습" == "기계학습") True >> print("기계학습" != "파이썬") True >> print("기계학습" < "파이썬") True >> print("기계학습" > "파이썬") False
불끼리 연산할 때에는 논리 연산자를 사용한다.
연산자 | 의미 | 설명 |
---|---|---|
not | 아니다 | 불을 반대로 전환한다. |
and | 그리고 | 피연산자 두 개가 모두 참일 때 True를 출력하며, 그 외는 모두 False를 출력한다. |
or | 또는 | 피연산자 두 개 중에 하나만 참이라도 True를 출력하며, 두 개가 모두 거짓일 때만 False를 출력한다. |
각각의 연산자에 대해 설명하기 전에 단항 연산자와 이항 연산자 개념에 대해 설명하겠다.
not 연산자는 단항 연산자로, 참과 거짓을 반대로 바꿀 때 사용한다.
좌변 | 우변 | 결과 |
---|---|---|
True | True | True |
False | True | False |
False | True | False |
False | False | False |
좌변 | 우변 | 결과 |
---|---|---|
True | True | True |
False | True | True |
False | True | True |
False | False | False |
조건에 따라 코드를 실행하거나, 실행하지 않게 만들고 싶을 때 사용하는 구문이다(=코드의 실행 흐름을 변경한다, 조건 분기).
< 조건문의 기본적인 구조>
>> if 불 값이 나오는 표현식: ... 불 값이 참일 때 실행할 문장 ... 불 값이 참일 때 실행할 문장
#날짜/시간과 관련된 기능을 가져온다. import datetime #현재 날짜/시간을 구한다. now =datetime.datetime.now() #출력한다. print(now.year,"년") print(now.month,"월") print(now.day,"일") print(now.hour,"시") print(now.minute,"분") print(now.second,"초")
실제로 vscode에서 출력해보자.
아래는 출력결과이다.
if 조건문 뒤에 사용하며, if 조건문의 조건이 거짓일 때 실행되는 부분이다.
< 조건문의 기본적인 구조>
>> if 조건: ... 조건이 참일 때 실행할 문장 >> else: ... 조건이 거짓일 때 실행할 문장
#입력 받기 number=input("정수 입력>") number=int(number) #조건문을 사용한다. if number % 2 == 0: #조건이 참일 때, 즉 짝수 조건 print("짝수입니다") else: #조건이 거짓일 때, 즉 홀수 조건 print("홀수입니다")
실제로 vscode에서 출력해보자.
365를 입력했을 때, 출력결과이다.
홀수와 짝수처럼 조건이 딱 두 가지로 구분되는 것도 있지만 그렇지 않은 것도 있다. 예를 들어 계절은 4개의 조건이 있고, 요일은 7개의 조건이 있다.
따라서, 3개 이상의 조건을 연결해서 사용할 때에는 if 조건문과 else 구문 사이에 elif구문을 입력하여 사용한다.
< 조건문의 기본적인 구조>
if 조건A: 조건이 참일 때 실행할 문장 elif 조건B: 조건 B가 참일 때 실행할 문장 elif 조건C: 조건C가 참일 때 실행할 문장 else: 조건이 거짓일 때 실행할 문장
#날짜/시간과 관련된 기능을 가져온다. import datetime #현재 날짜/시간을 구하고 #쉽게 사용할 수 있게 월을 변수에 저장한다. now=datetime.datetime.now() month=now.month #조건문으로 계절을 확인한다. if 3 <= month <= 5: print("꽃의 계절, 봄이에요.") elif 6<= month <= 8: print("바다의 계절, 여름이에요.") elif 9<= omnth <= 11: print("독서의 계절, 가을이에요.") else: print("눈의 계절, 겨울이에요.")
실제로 vscode에서 출력해보자.
현재는 7월로 여름이기 때문에, 출력 결과는 다음과 같이 나온다.
if 조건문의 매개변수에 불이 아닌 다른 값이 올 대는 자동으로 이를 불로 변환해서 처리한다. 따라서 어떤 값이 True로 변환되고, 어떤 값이 False로 변환되는지 알고 있어야 코드를 이해할 수 있다.
False로 변환되는 값은 None, 숫자 0과 0.0, 빈 컨테이너(빈 문자열, 빈 바이트열, 빈 리스트, 빈 튜플, 빈 딕셔너리 등)이다. 이 외에는 모두 True로 변환된다.
프로그래밍을 하다 보면 일단 프로그래밍 전체 골격을 잡고 내부에서 처리할 내용을 작성하는 경우가 많다. 그러면 나중에 구현하려고 비워 둔 구문이 발생한다. 파이썬의 경우 if 조건문 사이에는 무조건 들여쓰기 4칸(Tab)을 넣고 코드를 작성해야 구문이 성립되기 때문에, IndentationError가 발생한다.
이때 pass 키워드를 사용해서, '진짜로 아무것도 안함' 또는 '곧 개발하겠음'이라는 의미를 나타낼 수 있다.
문제
사용자에게 태어난 연도를 입력받아 띠를 출력하는 프로그램을 작성해 주세요. 작성 시 입력받은 연도를 12로 나눈 나머지를 사용합니다. 나머지를 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11일 때, 각각 원숭이, 닭, 개, 돼지, 쥐, 소, 범, 토끼, 용, 뱀, 말, 양띠입니다.