티스토리 뷰
4.11 논리연산자(Logical Operators)
- 논리연산자(Logical Operators) or, and 그리고 not은 복합적인 조건식을 만들때 사용한다.
- 우리는 두 개 이상의 조건식을 작성하여야 하는 경우가 생긴다.
- 이런 경우 논리연산자를 이용하여 두 개 이상의 조건식을 조합하여 표현할 수 있다.
- 논리연산자(Logical Operators)는 부울 연산자(Boolean Operators)라고도 알려져 있다.
- 종류는 not, and, or 이 있다.
* not 논리 연산자
p |
not p |
Example (assume age = 24, gender = 'F') |
True |
False |
not (age > 18) 은 거짓(False) 이다, 왜냐면 (age > 18) 가 참(True) 이기 때문. |
False |
True |
not (gender == 'M') 은 참(True)이다. 왜냐면 (gender == 'M') 은 거짓(False) 이기 때문. |
* and 논리 연산자
p1 |
p2 |
p1 and p2 |
Example (assume age = 24, gender = 'F') |
False |
False |
False |
(age > 18) and (gender != 'F' ) 는 거짓(False)이다. 왜냐면 (gender != 'F' )가 거짓(False)이기 때문.
(age > 18) and (gender == 'F') 는 참(True)이다. 왜냐면 (age > 18) 와 (gender == 'F') 둘 다 참(True)이기 떄문. |
False |
True |
False | |
True |
False |
False | |
True |
True |
True |
* or 논리 연산자
p1 |
p2 |
p1 and p2 |
Example (assume age = 24, gender = 'F') |
False |
False |
False |
(age > 34) or (gender == 'M' ) 는 거짓(False)이다. 왜냐면 (age > 34) 와 (gender == 'M' ) 둘 다 거짓(False)이기 때문.
(age > 34) or (gender == 'F') 는 참(True)이다. 왜냐면 (gender == 'F') 가 참(True) 이기 떄문. |
False |
True |
True | |
True |
False |
True | |
True |
True |
True |
* 부울 연산자(boolean operator) 예제
1
2
3
4
5
6
7
8
9
10
11 |
number = eval(input("Enter the number: "))
if number % 2 == 0 and number % 3 == 0:
print(number, " is divisible by 2 and 3.")
if number % 2 == 0 or number % 3 == 0 :
print(number," is divisible by 2 or 3.")
if (number % 2 == 0 or number % 3 ==0) and \
not (number % 2 == 0 and number % 3 ==0):
print(number," is divisible by 2 or 3. but not both") |
cs |
* tip
- 만약 not 연산자와 or, and 연산자를 함께 사용하는 것이 헷갈린다면, 드 모르간 법칙(De Morgan’s law)을 이용하는 것이 편리하다.
"not (condition1 and condition2)" 는 "not condition1 or not condition2" 와 같은 의미이다.
"not (condition1 or condition2)" 는 "not condition1 and not condition2" 와 같은 의미이다.
- 즉, 논리 연산자에서, and 연산자를 사용한 식들에서 둘 중 하나가 False 라면 전체 표현식이 False 이고, or 연산자를 사용한 식들에서 둘 중 하나가 True라면 전체 표현식이 True이다.
- 또, 논리연산자를 사용할 때에 파이썬은 효율적인 연산을 위해 우선순위를 두고 연산을 진행한다.
- 예를 들어, p1 and p2 에서 파이썬은 첫 번째로 p1을 먼저 계산하며, p1이 True라면 p2의 계산을 진행한다. 하지만 만약 p1이 False 라면 p2로 연산을 진행하지 않는다.
- p1 or p2의 경우, p1을 먼저 계산하고, p1이 False라면 p2의 계산을 진행한다. 하지만 만약 p1이 True 라면 p2의 계산을 진행하지 않는다.
*elif와 if의 차이
if문의 경우, if문으로 되어있는 각각의 모든 조건식을 확인.
elif문의 경우, if문의 조건식이 충족된다면, elif문은 확인하지 않고 넘어감.
4.12 사례 연구: 윤년 판별하기
- 윤년 계산법
4로 나누어지면서 100으로는 나누어 지지 않는 년도 = 윤년
400으로는 나누어 떨어지는 년도 = 윤년
그 외에는 평년이다.
1
2
3
4
5
6
7
8 |
year = eval(input("Enter the year: "))
if (year % 4 == 0 and year % 100 != 0) or \
year % 400 == 0:
print(year, " is leap year.")
else:
print(year, " is not leap year.") |
cs |
4.13 사례 연구: 복권
- 1~99까지의 복권 번호를 랜덤으로 받는다.
- 사용자가 번호의 순서와 숫자를 모두 정확하게 맞추면 $10000
- 순서는 틀렸지만 숫자가 모두 맞다면 $3000
- 숫자 하나만 맞췄다면 $1000
- 그 외는 꽝
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 |
import random
userNumber = eval(input("Enter the number: "))
comNumber = 60#random.randint(0,99)
print("The lottery number is ",comNumber)
digit1 = comNumber // 10
digit2 = comNumber % 10
if digit1 == userNumber // 10 and digit2 == userNumber % 10 :
print("Exact match: you win $10,000")
elif digit1 == userNumber % 10 and digit2 == userNumber // 10 :
print("Match all digits: you win $3,000")
elif (digit1 == userNumber % 10 or \
digit1 == userNumber // 10 or \
digit2 == userNumber % 10 or \
digit2 == userNumber // 10) :
print("Match one digits: you wind $1,000")
else:
print("sorry, no match") |
cs |
참고 문헌 : Introduction to Programming Using Python / Y.DANIEL LIANG
※
본 게시물은 개인적인 용도로 작성된 게시물입니다. 이후 포트폴리오로 사용될 정리 자료이니 불펌과 무단도용은 하지 말아주시고 개인 공부 목적으로만 이용해주시기 바랍니다.
교재 영어 원서를 직접 번역하여 정리한 게시물이므로 일부 오타, 의역이 존재할 수 있습니다. 틀린 부분이 있다면 댓글로 알려주시면 감사하겠습니다.
※
'파이썬 > 이론' 카테고리의 다른 글
[파이썬]루프(while문 for문) (0) | 2017.07.21 |
---|---|
[파이썬]조건식,연산자 우선순위와 결합법칙, 객체의 위치파악 (0) | 2017.07.18 |
[파이썬]중첩 if문, if-elif-else문, 선택문 오류들 (0) | 2017.07.18 |
[파이썬]단일 if문, 이중 if-else 문, 생일 맞히기 (0) | 2017.07.15 |
[파이썬]선택문, 부울, 랜덤 모듈과 랜덤함수 (0) | 2017.07.15 |
- Total
- Today
- Yesterday
- 백준 10451
- 파이썬 단계적 개선
- 자바스크립트 그래프
- 파이썬 문자열
- 파이썬 클래스
- 자바스크립트 자료구조
- 파이썬 객체
- 백준
- 파이썬 리스트
- css
- 파이썬 while
- 파이썬 함수
- 파이썬
- css 박스
- 파이썬 if문
- 백준 11501
- 파이썬 터틀
- 명품 c++ 실습
- 파이썬 진수 변환
- css 그리드
- 웹
- 자바
- 자바 에센셜 실습문제
- 자료구조
- 파이썬 선택문
- 파이썬 예제
- 파이썬 for
- 파이썬 연산자
- 백준 1874
- 버츄어박스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |