코딩 노트

03-1 불 자료형과 if 조건문 본문

Python

03-1 불 자료형과 if 조건문

newbyeol 2021. 4. 18. 22:59

1. 불 만들기: 비교 연산자

불은 비교 연산자를 통해 만들 수 있다. 파이썬에는 6개의 비교 연산자가 있다.

중고등학교 수학 시간에 배우는 기본적인 연산자인데, 모양은 다르지만 쉽게 이해할 수 있다.

연산자

설명

연산자

설명

==

같다

>

크다

!=

다르다

<=

작거나 같다

<

작다

>=

크거나 같다

 

>>> print(10 == 100)
False
>>> print(10 != 100)
True
>>> print(10 < 100)
True
>>> print(10 > 100)
False
>>> print(10 <= 100)
True
>>> print(10 >= 100)
False

 

조건식

의미

결과

10 == 100

10과 100은 같다

거짓

10 != 100

10과  100은 다르다

10 < 100

10은 100보다 작다

10 > 100

10은 100보다 크다

거짓

10 <= 100

10은 100보다 작거나 같다

10 >= 100

10은 100보다 크거나 같다

거짓

숫자열도 비교 연산자 적용이 되지만 문자열에도 가능하다.

이때 한글은 사전 순서(가나다순)로 앞에 있는 것이 작은 값을 갖는다. 예를 들어 '가방'과 '하마'를 비교하면

사전 순서로 '가방'이 앞에 있으므로 '가방'이 '하마'보다 작은 값을 갖는다.

>>> print("가방" == "가방")
True
>>> print("가방" != "가방")
True
>>> print("가방" < "가방")
True
>>> print("가방" > "가방")
False

· 범위 구하기

>>> x = 25
>>> print(10 < x < 30)
True
>>> print(40 < x < 60)
False

2. 불 연산하기: 논리 연산자

불을 만들 때는 비교 연산자를 사용한다고 했다. 그리고 불끼리는 논리 연산자를 사용할 수 있다.

파이썬에는 다음과 같은 세 개의 논리 연산자가 있다.

연산자

의미

설명

not

아니다

불을 반대로 전환합니다.

and

그리고

피연산자가 두 개가 모두 참일 때 True를 출력하며, 그 외는

모두 False를 출력합니다.

or

또는

피연산자 두 개 중에 하나만 참이라도 True를 출력하며, 두 개가 모두 거짓일 때만 False를

출력합니다.

 

· 단항 연산자와 이항 연산자

단항 연산자는 피연산자가 한 개라는 말이고, 이항 연산자는 피연산자가 두 개라는 말이다.

단항 연산자의 대표적인 예로 부호 연산자가 있는데, -10을 예로 들어보자면 10을 음수로 만들기 위한 마이너스(-)

연산자는 피연산자를 한 개만 가지고 있기 때문에 단항 연산자라고 부른다. 또는 +10의 경우에도 10이 양수임을

확실하게 알려 주기 위해 플러스(+) 연산자를 사용했으므로 이또한 단항 연산자이다.

 

이항 연산자의 대표적인 예는 우리가 기본적으로 사용하는 숫자 연산자 대부분을 말한다.

10 + 10, 10 * 10, 10 / 10을 보면 연산자 양쪽에 피연산자를 하나씩 가지고 있는데, 이러한 것을 이항 연산자라고 한다.

 

· not 연산자

not 연산자는 단항 연산자로, 참과 거짓을 반대로 바꿀 때 사용한다.

일반적으로 다음과 같이 비교 연산자로 불 자료형의 변수를 만들고, 여기에 not 연산자를 적용한다.

x=10
under_20=x<20
print("under_20:",under_20)
print("not under_20:", not under_20)

· and 연산자와 or 연산자

and 연산자는 양쪽 변의 값이 모두 참일 때만 True를 결과로 낸다.

좌변

우변

결과

True

True

True

True

False

False

False

True

False

False

False

False

 

반면 or 연산자는 둘 중 하나만 참이어도 True를 결과로 낸다.

 

좌변 우변 결과
True True True
True False True
False True True
False False False

3. 논리 연산자의 활용

· and 연산자

두 가지 조건을 모두 충족할 때만 가능하다.

· or 연산자

두 가지 조건 중 하나이기만 하면 가능하다.

4. if 조건문이란?

파이썬에서 if 조건문은 조건에 따라 코드를 실행하거나, 실행하지 않게 만들고 싶을 때 사용하는 구문이다.

이는 코드의 실행 흐름을 변경한다는 뜻이다. 이렇게 조건을 기반으로 실행의 흐름을 변경하는 것을

조건 분기라고 한다.

 

if 불 값이 나오는 표현식: --> if의 조건문 뒤에는 반드시 콜론(:)을 붙여줘야 한다.
	불 값이 참일 때 실행할 문장
    	불 값이 참일 떄 실행할 문장
if문 다음 문장은 4칸 들여쓰기 후 입력한다.

· 조건문의 기본사용

# 입력을 받습니다.
number = input("정수 입력> ")
number = int(number)

# 양수 조건
if number > 0:
    print("양수입니다")

# 음수 조건
if number < 0:
    print("음수입니다")

# 0 조건
if number == 0:
    print("0입니다")

5. 날짜/시간 활용하기

· 날짜/시간 출력하기&날짜/시간을 한 줄로 출력하기

#날짜/시간과 관련된 기능을 가져옵니다
import datetime

#현재 날짜/시간을 구합니다
now = datetime.datetime.now()

#출력합니다1
print(now.year,"년")
print(now.month,"월")
print(now.day,"일")
print(now.hour,"시")
print(now.minute,"분")
print(now.second,"초")

#출력합니다2
print("{}년 {}월 {}일 {}시 {}분 {}초".format(
        now.year,
        now.month,
        now.day,
        now.hour,
        now.minute,
        now.second,
        ))

우선 모듈이라는 기능을 활용해서 datetime이라는 기능을 가져오는 게 첫 번째 해야할 일(2행)이고, 그 다음 

datetime.datetime.now()라는 함수로 현재의 시간을 구해 now라는 변수에 대입한다(5행). 마지막으로 now.year"년",now.month"월",now.day"일",now.hour"시",now.minute"분",now.second"초"를 사용해 현재의

년,월,일,시,분,초를 출력한다.(8~13행)

 

※ 대부분 프로그래밍 언어는 월을 0~11까지로 출력한다. 이는 문자열의 첫 번째 글자를 0번째라고 세었던 것처럼

프로그래밍 언어의 규칙을 지키기 위한 목적이다. 하지만 파이썬은 사람이 이해하기 쉬운 형태로 월을 출력한다.

 

·  오전과 오후를 구분하는 프로그램

#날짜/시간과 관련된 기능을 가져옵니다.
import datetime

#오전 구분
if now.hour < 12:
    print("현재 시간은 {}시로 오전입니다!".format(now.hour))

#오후 구분
if now.hour >= 12:
    print("현재 시각은 {}시로 오후입니다!".format(now.hour))

·  계절을 구분하는 프로그램

#봄 구분
if 3 <=now.month <= 5:
    print("이번 달은 {}월로 봄입니다!".format(now.month))

#여름 구분
if 6 <=now.month <= 8:
    print("이번 달은 {}월로 여름입니다!".format(now.month))

#가을 구분
if 9 <=now.month <= 11:
    print("이번 달은 {}월로 가을입니다!".format(now.month))

#겨울 구분
if now.month == 12 or 1 <= now.month <= 2:
    print("이번 달은 {}월로 겨울입니다!".format(now.month))

봄은 3월부터 5월까지이므로 3보다 크거나 같고 5보다 작거나 같은지를 묻는 조건식을,

여름은 6월부터 8월 까지이므로 6보다 크거나 같고 8보다 작거나 같은지를 묻는 조건식을,

가을은 9월부터 11월까지이므로 9보다 크거나 같고 11보다 작거나 같은지를 묻는 조건식을,

겨울의 경우는 12월과 1~2월이므로 or 연산자를 사용해 범위를 연결했다.

 

6. 컴퓨터의 조건

if문의 '불 값이 나오는 조건문'을 어떻게 만들 것인가가 핵심이다.

 

·  끝자리로 짝수와 홀수 구분

#입력을 받습니다.
number = input("정수 입력> ")

#마지막 자리 숫자를 추출
last_character = number[-1]

#숫자로 변환하기
last_number = int(last_character)

#짝수 확인
if last_number == 0 \
    or last_number ==2 \
    or last_number ==4 \
    or last_number ==6 \
    or last_number ==8:
    print("짝수입니다")

#홀수 확인
if last_number == 1 \
    or last_number ==3 \
    or last_number ==5 \
    or last_number ==7 \
    or last_number ==9:
    print("홀수입니다")

(파이썬에서 줄이 너무 길어질 때는 11행과 같이 \ 기호를 입력하고 줄바꿈해서 코드를 입력한다.)

 

첫 번째 실행결과를 보면 52를 입력했고 "짝수입니다"를 출력했다. 코드를 다시 살펴보면 52를 입력했으므로 

number에 52라는 문자열이 들어가고(2행), number[-1]에 의해 문자열의 마지막 글자를 추출하므로

last_character에는 2라는 문자열이 들어간다(5행). 그런 다음 2를 숫자 자료형으로 변환한 후 last_number에 넣고(8행),

0,2,4,6,8 그리고 1,2,5,7,9와 비교를 한 뒤 "짝수입니다" 혹은 "홀수입니다"를 출력한다.

2는 짝수이므로 "짝수입니다"를 출력한다.

 

·  in 문자열 연산자를 활용해서 짝수와 홀수 구분

#입력을 받습니다
number = input("정수 입력>")
last_character = number[-1]

#짝수 조건
if last_character in "02468":
    print("짝수입니다")

if last_charcter in "13579":
    print("홀수입니다")

3행의 last_character에 있는 문자열이 "02468"이라는 문자열에 포함되어 있는지(6행) 혹은 "13579"라는 문자열에 

포함되어 있는지(10행)를 확인해 홀수 혹은 짝수를 출력하도록 하는 코드이다. 코드가 위보다 훨씬 깔끔해졌다.

 

이번엔 컴퓨터는 모든 것을 숫자로 계산하기 때문에 문자열 연산보다 숫자 연산이 조금 더 빠르니 숫자 연산을

통해 홀수와 짝수를 구분해보겠다.

 

·  나머지 연산자를 활용해서 짝수와 홀수 구분

#입력을 받습니다.
number = input("정수 입력>")
number = int(number)

# 짝수 조건
if number % 2 == 0:
    print("짝수입니다")

#홀수 조건
if numner % 2 == 1:
    print("홀수입니다")

단순하게 2로 나눈 나머지가 0이면 '짝수', 1이면 '홀수'라고 지정한 것이다. 이처럼 우리는 짝수와 홀수를 구분할 때

숫자의 끝자리가 2,4,6,8,0 이라면 곧바로 짝수라고 생각하지만, 컴퓨터는 2로 나눈 나머지가 0인지를 확인하는 것이

좋다. 그래서 조건문을 만들 때는 언제나 '컴퓨터에서는 어떻게 하는 게 더 빠를까'를 생각해야 한다.

'Python' 카테고리의 다른 글

04-1 리스트와 반복문  (0) 2021.04.22
03-2 if~else와 elif 구문  (0) 2021.04.20
02-4 숫자와 문자열의 다양한 기능  (0) 2021.04.17
02-3 변수와 입력  (0) 2021.04.17
02-2 숫자  (0) 2021.04.12