티스토리 뷰
1. 간단한 사칙 연산
파이썬에서는 사칙연산을 하려면 더하기(+), 빼기(-), 곱하기(*), 나누기(/) 기호를 이용해야 한다. 다음은 사칙 연산의 예이다.
In: 1+1 Out: 2 |
In: 5-2 Out: 3 |
In: 15*2 Out: 30
In: 10/2 Out: 5.0 |
나눗셈의 결과가 5가 아니라 5.0인 이유는 파이썬 3.x버전 에서는 나눗셈 연산을 실수로 처리하기 때문이다.
앞에서는 정수 연산만 했지만, 실수 연산도 할 수 있다.
In: 1.2 + 5.3 Out: 6.5 |
In: 3.5-5 Out: -1.5 |
In: 1.4*2 Out: 2.8 |
In: 5/2 Out: 2.5 |
조금 복잡한 연산을 해 보겠다. 연산 기호가 두 개 이상일 경우 일반적인 연산 규칙을 따른다.
In: 2+3*4 Out: 14 |
In: 3/2*4-5/2 Out: 3.5 |
In: 10/5+(5-2)*2 Out: 8.0 |
In: (5*4-15)+((5-2)*(9-7)) Out: 11 |
파이썬에는 자료 형식(데이터 타입)을 알려주는 type()이라는 함수가 있다. type() 함수의 인자로 정수를 입력하면 int를, 실수를 입력하면 float를 결과로 돌려준다.
In: type(3) Out: int |
In: type(1.2) Out: float
2. 거듭 제곱과 나머지
In: 2*2*2*2*2 Out: 32 |
답은 맞게 나오지만 입력이 쉽지 않다. 파이썬에는 거듭제곱을 위한 연산자 **가 있다. A**n은 A의 n제곱을 의미한다.
In: 2**5 Out: 32 |
In: 1.5**2 Out: 2.25
root 2도 다음과 같이 표현 할 수 있다.
In: 2**(1/2) Out: 1.4142135623730951 |
다음으로는 나머지를 구하는 방법에 대해서 알아보겠다. 나머지를 구하기 위해 파이썬에서는 퍼센트 기호(%)를 이용한다. 퍼센트 기호(%)를 나머지 연산자라고 한다.
In: 13%5 Out: 3 |
몫을 구하기 위해서는 정수나누기 연산자를 두번 이용하면 된다.
In: 13//5 Out: 2 |
3. 과학적 표기법
10의 거듭제곱의 경우 en으로 편리하게 입력할 수 있다. 여기서 n은 정수로 양수와 음수일 수 있다.
여기서 주의할 것은 10의 거듭제곱 표시를 위한 en 앞에는 항상 숫자가 있어야 한다는 것이다. 즉, 10의 3제곱은 1*10^3이므로 1e3과 같이 입력해야 한다. 1e3 대신 e3을 입력하면 오류가 발생한다.
입력뿐만 아니라 출력에서도 en 형식을 이용해보자. 출력 숫자에 들어간 0의 개수에 따라서 en 형식 출력 여부가 결정된다.
만약, 1e15를 입력하면 과학적 표기법으로 표시하지 않고, 1e16을 입력하면 과학적 표기법으로 표시된다. 또한 1e-4를 입력하면 과학적 표기법으로 표시하지 않고, 1e-5를 입력하면 과학적 표기법으로 표시한다.
In: 1e15 Out: 1000000000000000.0 |
In: 1e16 Out: 1e+16 |
In: 1e-4 Out: 0.0001 |
In: 1e-5 Out: 1e-05 |
4. 진수 표현과 변환
컴퓨터 프로그래밍을 할 때 숫자 0과 1만 이용한 2진법을 종종 사용한다. 특히, 컴퓨터 하드웨어 제어를 수행하는 코드를 작성할 때는 2진법을 많이 이용한다. 또한 2진법으로 변환하기 쉬운 8진법과 16진법도 많이 사용한다. 8진법은 0~7까지의 숫자를, 16진법은 {0~9,a,b,c,d,e,f}를 이용해 숫자를 표현한다. 또한 2진법, 8진법, 10진법, 16진법으로 표현된 숫자를 각각 2진수 , 8진수, 10진수, 16진수라고 한다.
파이썬은 10진법 외에 2진법, 8진법, 16진법으로 숫자를 입출력하며 변환하는 방법을 제공한다. 10진법을 이용한 10진수를 사용하는 방법은 앞에서 이미 살펴봤다. 10진수 외에 2진수, 8진수, 16진수를 입력하기 위해서는 숫자 앞에 각각 '0b', '0o', '0x'를 붙인다. 다음은 10진주 17을 각각 10진수, 2진수, 8진수, 1진수로 입력해 보았다.
In: 17 Out: 17 |
In: 0b10001 Out: 17 |
In: 0o21 Out: 17 |
In: 0x11 Out: 17 |
2진수, 8진수, 16진수의 경우 출력 결과를 2진수, 8진수, 16진수로 표현해야 보기 편할 때가 있다.
파이썬에서는 10진수를 2진수, 8진수, 16진수를 각각 bin(), oct(), hex()를 이용하여 변환한다.
In: bin(17) Out: '0b10001' |
In: oct(17) Out: '0o21' |
In: hex(17) Out: '0x11' |
여기서 주의해야 할 것이 있는데, 출력 결과를 보면 작은 따옴표가 있다. 이는 출력결과가 숫자가 아닌 문자열이라는 것이다. 이 출력 결과들은 산술 연산에 사용할 수 없다. 따라서 진수 변환은 연산이 모두 끝난 후에 해야 한다.
서로 다른 진수의 연산 결과를 10진수, 2진수, 8진수, 16진수로 변환해 출력했다.
In: 0b10 * 0o10 + 0x10 - 10 Out: 22 |
In: bin(0b10 * 0o10 + 0x10 - 10) Out: '0b10110' |
In: oct(0b10 * 0o10 + 0x10 - 10) Out: '0o26' |
In: hex(0b10 * 0o10 + 0x10 - 10) Out: '0x16' |
5. 논리 연산 및 비교 연산
논리 연산은 불린 연산(Boolean operation)이라고도 한다. 파이썬에서 논리 연산을 위한 데이터 타입은 불(bool)이다. 불 데이터 타입에는 논리 참(True) 혹은 거짓(False)을 입력할 때 참은 True, 거짓은 False를 입력해야 하며 'True'나 'False'처럼 따옴표를 사용하면 안된다. 따옴표를 이용해 입력하면 불 데이터가 아니라 문자열 데이터로 인식하게 된다. 또한 True를 true나 TRUE로 쓰거나 False를 false나 FALSE로 쓸 수 없다.
In: print(True) |
Out: True |
In: print(False) |
Out: False |
위의 예는 문자열을 출력하는 print('True')나 print('False')와 달리, 논리 연산의 결과를 출력한 것이다. 불 데이터인 True나 Fasle의 데이터 타입은 type() 함수를 이용해 확인할 수 있다.
In: type(True) |
Out: bool |
불 데이터의 경우 논리 연산만 할 수 있다. 논리 연산에는 논리곱(and), 논리합(or), 논리 부정(not)등이 있다.
논리 연산자 |
의미 |
활용 예 |
설명 |
and |
논리곱 |
A and B |
A와 B 모두 참일 때만 참이고, 나머지는 거짓 |
or |
논리합 |
A or B |
A와 B 중 하나라도 참이면 참이고, 둘 다 거짓일 때 거짓 |
not |
논리 부정 |
not A |
A가 참이면 거짓이고, 거짓이면 참 |
A |
B |
A and B |
A or B |
not A |
False |
False |
False |
False |
True |
False |
True |
False |
True |
True |
True |
False |
False |
True |
False |
True |
True |
True |
True |
False |
논리연산(and, or, not)의 예를 보자
In: print(True and False) print(True or False) print(not True) |
Out: False True False |
다음으로 두 개의 숫자를 비교하는 비교 연산에 대해 알아보자. 비교연산의 결과는 불 데이터로 출력이 된다. 따라서 비교 연산은 논리 연산과 함께 이용하는 경우가 많다.
비교 연산자 |
의미 |
활용 예 |
설명 |
== |
같다 |
a == b |
a는 b와 같다 |
!= |
같지 않다 |
a != b |
a는 b와 같지 않다 |
< |
작다 |
a < b |
a는 b보다 작다 |
> |
크다 |
a > b |
a는 b보다 크다 |
<= |
작거나 같다 |
a <= b |
a는 b보다 작거나 같다 |
>= |
크거나 같다 |
a >= b |
a는 b보다 크거나 같다. |
다음은 비교 연산자를 이용해 연산한 예이다.
In: print(5 == 3) print(5 != 3) print(5 < 3) print(5 > 3) print(5 <= 3) print(5 >= 3) |
Out: False True False True False True |
비교 연산과 논리 연산을 혼합한 연산을 해보자. 비교 연산자의 우선순위가 논리 연산자의 우선순위보다 높다. 따라서 비교 연산자와 논리 연산자가 함께 있으면 비교 연산을 먼저 한다.
In: print(1 > 0 and -2 < 0) |
Out: True |
괄호와 연산이 함께 있으면 괄호의 우선순위가 높다. 괄호가 여러 겹 있을 때는 가장 안쪽 괄호부터 먼저 계산합니다.
In: print((3 < 0) and ((-5 > 0) and (1 > 5))) print((3 > 0) or ((-5 > 0) and (1 > 5))) print(((3 > 0) or (-5 > 0)) and ((4 > 8) or (3 < 0))) |
Out: False True False |
출처: 파이썬 철저 입문
'beginner > 파이썬 분석' 카테고리의 다른 글
문자열과 텍스트 파일 데이터 다루기 ② (0) | 2019.01.15 |
---|---|
문자열과 텍스트 파일 데이터 다루기 ① (0) | 2019.01.14 |
객체와 클래스 ② (0) | 2019.01.14 |
객체와 클래스 ① (0) | 2019.01.14 |
[Quest]이중 for문을 이용한 구구단 (0) | 2019.01.11 |