개요
파이썬의 연산자 종류에 대한 개요를 알아보고 각 연산자들의 특징을 파악한다. 파이썬 연산자 종류는 아래와 같다.
- 수치 연산자
- 대입 연산자
- 관계, 논리 연산자
- 비트 및 구성원 연산자
산술 연산자
연산자 | 설명 | 사용 예시 |
+ | 덧셈 | 9 + 2 = 11 |
- | 뺄셈 | 9 - 2 = 7 |
* | 곱셈 | 9 * 2 = 18 |
/ |
나눗셈 int/int 계산에서는 자동으로 float형 변환 |
9 / 2 = 4.5 |
** | 거듭제곱 | 9 ** 2 = 81 |
% | 몫을 제외한 나머지 값 | 9 % 2 = 1 |
// |
정수 나누기. 몫. 파이썬 버전 2.xx에서의 나눗셈과 동일 |
9 // 2 = 4 |
산술 연산자는 간략히 위의 표와 같이 정리할 수 있다. 사용 예시를 보면 몇 가지를 제외하고 기존에 실생활에서 사용하던 사칙연산과 크게 다를바가 없다.
사용 예시
a = 11 + 2
b = 12 - 2
c = 13 * 2
d = 14 / 2
e = 15 ** 2
f = 16 // 2
g = 17 % 3
print(a, b, c, d, e, f, g)
#결과
13 10 26 7.0 225 8 2
예제 코드의 결과를 보면 조금 특이한 점을 발견할 수 있다. 다른 프로그래밍 언어인 C언어 및 Java는 정수형끼리 나누면 정수형 결과가 나오는데 파이썬은 조금 다르게 실수형 결과(7.0)가 나온다.
참고로, 산술 연산자의 우선 순위는 거듭제곱, 곱하기, 나누기, 나머지, 몫, 더하기, 빼기이며 결합도는 좌에서 우로 계산하면 된다.
a = 11 + 6 - 4 * 3 ** 2
print(a)
# 반지름이 11인 원의 면적은?
c = 11 ** 2 * 3.14
print("원의 면적:", c)
#결과
-19
원의 면적: 379.94
예제 코드의 첫 번째 줄의 a의 출력 값은 -19이다. 그 이유는 연산자 우선 순위에 의해 거듭제곱의 연산자 우선순위가 가장 높기 때문에 가장 먼저 계산되고, 그 다음 곱셈 연산자가 계산된다. 그리고 순차적으로 계산되며 결국 -19의 값을 출력한다. 이와 같은 방법으로 원의 면적을 예제 코드와 같이 구할 수 있다.
s = input("input:")
print(s)
print(type(s))
#결과
input:12
12
<class 'str'>
외부 장치로부터 입력 값을 받는 C언어의 scanf와 같은 기능은 파이썬에서는 input 함수이다.
위의 예제 코드를 작성하여 키보드로 숫자 12를 입력해보자. 그리고 입력 받은 객체의 타입을 보면 문자열(str) 타입인 것을 확인할 수 있다. 따라서, 우리는 어떤 값(숫자, 문자 등)을 입력하던 input 함수를 통해 받는다면 모두 문자열 타입이 된다.
그렇다면 하나의 반지름을 외부 장치인 키보드로부터 입력 받아 원의 면적을 구하기 위해서는 어떻게 해야할까? input 함수로 입력받으면 문자열 타입이기 때문에 곱하기 연산을 하면 올바른 결과 값을 출력하지 못하고 해당 문자열을 곱하기 연산 만큼 반복하게 된다. 따라서 문자열을 반드시 정수 타입으로 변환해주어야 한다.
a = '12'
a = int(a)
print(type(a))
b = 12
b = str(a)
print(type(b))
c = (10, 20, 30)
c = list(c)
print(type(c))
#결과
<class 'int'>
<class 'str'>
<class 'list'>
위의 예제와 같이 파이썬의 내장 함수를 통해 충분히 객체 타입을 원하는대로 바꿀 수 있다. 예제 출력 결과를 보면 문자열은 정수로, 정수는 문자열로, 튜플은 리스트로 바뀜을 확인할 수 있다. 따라서 내장 함수인 input을 통해 문자열을 받은 후 원의 면적을 구하는 방법은 아래처럼 검증할 수 있다.
# 하나의 반지름 값을 입력받아 원의 면적을 구하시오
r = input("반지름을 입력하시오: ")
r = int(r)
c = r ** 2 * 3.14
print(c)
#결과
반지름을 입력하시오: 11
379.94
대입 연산자
연산자 | 설명 | 사용 예시 |
+= | 덧셈 | i += 3 |
-= | 뺄셈 | i -= 3 |
*= | 곱셈 | i *= 3 |
/= | 나눗셈 | i /= 3 |
//= | 몫 | i //= 3 |
%= | 나머지 | i %= 3 |
**= | 거듭제곱 | i **= 3 |
대입 연산자는 위와 같이 정리된다. 연산에 사용되는 주체를 대입하여 사용함으로써 간단하게 표현할 수 있다.
사용 예시
a, b, c, d, e, f, g = 10, 10, 10, 10, 10, 10, 10
a += 3
b -= 3
c *= 3
d /= 3
e //= 3
f %= 3
g **= 3
print(a, b, c, d, e, f, g)
#결과
13 7 30 3.3333333333333335 3 1 1000
예제와 같이 연산 결과는 짐작할 수 있다. 3번 라인을 풀어서 쓰면 a = a + 3이 된다. 이렇게 대입 연산자를 쓰면 더 간결하게 표현 가능하다.
a = 10
a++
#결과
File "<ipython-input-10-556c10cad483>", line 2
a++
^
SyntaxError: invalid syntax
참고로, Python에서는 전치연산자 및 후치연산자를 사용할 수 없다.
후치 연산자를 사용하였을 때는 syntax error 발생으로 인해 불가능하다.
a = 10
++a
print(a)
#결과
10
전치 연산자를 사용하였을 때는 error 발생은 하지 않지만 값이 증가되지 않음을 확인 가능하다. 그 이유는 값 1을 증가시키는 것이 아닌 +(+a)와 같이 계산되기 때문이다.
'언어 > Python' 카테고리의 다른 글
[Python] Python(파이썬) 관계/논리/비트 연산자 (0) | 2020.03.30 |
---|---|
[Python] Python(파이썬) 데이터 분석을 위한 Excel(엑셀) 활용 (1) (0) | 2020.03.28 |
[Python] Python(파이썬) 시퀀스 데이터 타입 (4) - 세트(Set) (0) | 2020.03.27 |
[Python] Python(파이썬) 시퀀스 데이터 타입 (4) - 딕셔너리(dictionary) (0) | 2020.03.26 |
[Python] Python(파이썬) 시퀀스 데이터 타입 (3) - 튜플(tuple) (0) | 2020.03.25 |