비교 연산자와 논리 연산자
이번 시간에는 if문 조건식에서 사용되는 비교 연산자와 논리 연산자에 대해 알아보고 배워보겠습니다.
- 비교 연산자:
>,<,>=,<=,==,!= - 논리 연산자:
and,or,not
비교 연산자
if문(또는 for문과 while문)의 조건식에서 사용되는 비교 연산자를 데이터표로 정리하면 다음과 같습니다.
비교 연산자 | 설명 |
a |
a는 b보다 크다 |
a |
a는 b보다 작다 |
a |
a와 b는 같다 |
a |
a와 b는 같지 않다 |
a |
a는 b보다 크거나 같다 |
a |
a는 b보다 작거나 같다 |
다음 예제를 통해 비교 연산자들이 어떤 경우에 참(True)이 되고 거짓(False)이 되는지 알아보겠습니다.
x = 20
y = 6
print(x > 10) # x가 10보다 큰가?
print(y <= 10) # y가 10보다 작거나 같은가?
print(x + y == 26)# x + y가 26과 같은가?
print(x % 2 == 0) # x를 2로 나눈 나머지가 0인가? 즉, 짝수인가?
print(y % 2 == 0) # y를 2로 나눈 나머지가 0인가? 즉, 짝수인가?
print(x % 4 == 0) # x가 4의 배수인가?
print(y % 3 != 0) # y는 3의 배수가 아닌가?
실행 결과는 다음과 같습니다.
- true
- true
- true
- true
- true
- true
- false
- 7행 조건식 x % 2 == 0은 'x를 2로 나눈 나머지가 0과 같다'는 의미이며 이것은 x가 짝수인지 아닌지를 판단하게 됩니다.
- 10행 y % 3 !=0은 y가 3의 배수가 아닌 경우 에는 참(True)이고, 현재 y의 값이 6이기 때문에 조건식은 '6을 3으로 나눈 나머지는 0이 아니다'가 되어 실행결과 거짓(false)이 되는 것입니다.
이번에는 키보드로 입력받은 수가 짝수인지 홀수인지를 판별하는 프로그램을 통해 알아보겠습니다.
num = int(input('숫자를 입력하세요: '))
if num % 2 == 0 :
print('짝수')
else :
print('홀수')
- 실행 결과 1: 짝수가 입력되었을 경우
- 숫자를 입력하세요: 42
- 짝수
- 실행결과 2: 홀수가 입력되었을 경우
- 숫자를 입력하세요: 37
- 홀수
- 3행 if의 조건식이 참(True)인 경우에는 4행에 의해 짝수이다가출력되고, 그렇지 않고 조건식이 거짓인 경우에는 6행 문자열에 의해 홀수이다가 출력됩니다.
정리하면, 키보드로 짝수의 숫자가 입력되면 실행결과 1과 같이 '짝수이다'라는 메시지가 출력되고, 홀수의 숫자가 입력되는 경우에는 실행결과 2에서와 같이 '홀수이다'가 출력되는 것입니다.
논리 연산자
논리 연산자도 비교 연산자와 마찬가지로 if문, for문, while문에서 주로 사용됩니다. 다음 데이터표는 파이썬에서 사용되는 논리 연산자를 정리한 것입니다.
논리 연산자 | 설명 |
조건1 |
조건1과 조건2 둘 다 참(True)이어야 전체 결과가 참이 된다 |
조건1 |
조건1과 조건2 중 하나만 참(True)이어도 전체 결과가 참이 된다 |
조건이 참(True)이면 결과는 거짓, 조건이 거짓이면 결과는 참이된다. |
논리 연산자 and는 두 조건이 모두 참(True)이어야만 참이 되고, or 연산자는 두 조건 중 하나만 참(True)이어도 참이 됩니다. 그리고 not 연산자는 참(True)을 거짓(false)으로, 거짓(false)을 참(true)으로 변경합니다.
논리 연산자: and
다음은 자격증 시험에서 필기 성적이 85점 이상이고, 실기 성적이 70점 이상인 경우에 합격이라고 판정하는 프로그램입니다. 이 프로그램을 통해 논리연산자 and 사용방법을 알아보겠습니다.
score1 = int(input('필기 성적을 입력하세요: '))
score2 = int(input('실기 성적을 입력하세요: '))
if score1 >= 85 and score2 >= 70 :
print('합격')
else :
print('불합격')
- 실행 결과 1: 필기 95, 실기 70인 경우
- 필기 성적을 입력하세요: 95
- 실기 성적을 입력하세요: 70
- 합격
- 실행결과 2: 필기 75. 실기 90인 경우
- 필기 성적을 입력하세요: 75
- 실기 성적을 입력하세요: 90
- 불합격
- 4~7행 if문의 조건식은 score1이 85점 이상이고, 동시에 score2가 70 이상이어야만 조건식이 참(True)이 됩니다. 조건식이 참이 되면, 5행의 문장에 의해 '합격'이 출력됩니다. 그렇지 않고 두 조건 중 하나라도 거짓이면 전체가 거짓이 되어 7행에 의해 '불합격'이 출력되는 것입니다.
논리 연산자: or
다음은 홈페이지에 아이디가 'Tistory'이거나 회원 레벨이 1이면, 관리자라고 판정하는 프로그램입니다. 이 프로그램을 통해 논리연산자 or 사용방법을 알아보겠습니다.
id = input('아이디를 입력하세요: ')
level = int(input('회원 레벨을 입력하세요: '))
if id == 'Tistory' or level == 1:
print('관리자 입니다.')
else :
print('관리자가 아닙니다.')
- 실행 결과 1: 필기 95, 실기 70인 경우
- 아이디를 입력하세요: Tistory
- 회원 레벨을 입력하세요: 1
- 관리자입니다.
- 실행 결과 2: 필기 95, 실기 70인 경우
- 아이디를 입력하세요: Naver
- 회원 레벨을 입력하세요: 1
- 관리자입니다.
- 실행결과 3: 필기 75, 실기 90인 경우
- 아이디를 입력하세요: Daum
- 회원 레벨을 입력하세요: 6
- 관리자가 아닙니다.
- 4~7행 if문의 조건식은 아이디가 'Tistory'이거나 level 1인 경우에 참(True)이 됩니다. 이 경우는 아이디가 'Tistory'이면 회원 레벨과 상관없이 관리자이고, 만약 아이디가 'Tistory'가 아니라면 회원 레벨을 체크하여 회원레벨이 1인 경우에는 관리자라고 판정하게 되는 것입니다.
논리 연산자: not
다음 예제를 통해 논리 연산자 not 사용방법에 대해 알아보겠습니다.
name = input('이름을 입력하세요.')
if not name :
print('이름이 입려되지 않았습니다.')
else :
print('이름: %s' % name)
- 실행 결과 1: 이름이 입력되지 않은 경우
- 이름을 입력하세요:
- 이름이 입력되지 않았습니다.
- 실행결과 2: 이름 '토니 안'이 입력된 경우
- 이름을 입력하세요: 토니 안
- 이름: 토니 안
위 실행 결과 두 가지 경우에 대해 좀 더 자세하게 알아보겠습니다.
- 실행결과 1을 얻는 경우
1행에서 키보드로 이름을 입력하지 않고 엠터 키를 입력하게 되면 변수 name은 값이 없는 상태, 즉 None의 값을 가지게 됩니다. None는 조건식에서 False로 판정하게 됩니다. 따라서 name의 값이 None면 조건식 not name은 True가 되어 4행에 의해 '이름이 입력되지 않았습니다'가 출력됩니다. - 실행결과 2를 얻는 경우
1행에서 키보드로 '토니 안' 이름이 입력되면 name 값은 '토니 안'이 되어 그 결과는 True가 됩니다. 따라서 not name은 False가 되어 else 다음 문장에 의해 '이름: 토니 안'이 출력됩니다.
논리 연산자 연습문제
if문에서 다음의 조건식은 참(True)일까 거짓일까? (문법적으로 유효한지 맞춰보세요)
if 16 :
if 0 :
if None :
if '루피' :
다음 시간에는 if~ 구문, if~ else~ 구문, if~ elif~ else~ 구문 사용방법에 대해 알아보도록 하겠습니다.