파이썬 산술 연산자와 표현식

파이썬 산술 연산자와 표현식

산술 연산과 표현식

(Arithmetic Operators and Expressions)

파이썬에서는 덧셈, 뺄셈, 곱셈, 나눗셈와 같은 기본 산술 연산이 존재한다. 기본적인 산술 연산과 표현식을 코드로 적을때의 컨벤션을 알아보자.


덧셈(Addition)

덧셈은 + 연산자와 함께 사용된다.

>>> 1 + 2
3

+ 연산자 양쪽에 각 숫자는 피연산자(operand)라고 불린다. 산술 연산을 할 때에 양쪽에 피연산자가 동일한 종류일 필요는 없다. 정수에다가 부동소수점을 더 할 수도 있다.

>>> 1.0 + 2
3.0

하지만 한 가지 주목해야 할 점은, 위 결과처럼 한 쪽이라도 부동소수점의 형태를 띄고 있으면 결과는 무조건 부동소수점 형태를 가진다는 것이다.

PEP 8에서는 양쪽 피연산자가 연산자 (+)를 기준으로 한 칸 띄어쓰기 하기를 권면한다. 예를 들어, 1+1을 적어도 파이썬은 연산을 수행하지만, 1 + 1이 보통 더 가독성이 좋다고 평가 된다. 이러한 컨벤션은 덧셈 뿐만 아니라 모든 연산에 해당된다.

뺄셈(Subtraction)

뺄셈은 - 연산자와 함께 사용된다.

>>> 1 - 1
0

>>> 5.0 - 3
2.0

- 연산자는 음수를 표현하기 위해서도 사용된다.

>>> -3
-3

파이썬에서는 음수를 다른 숫자와 뺄셈하는 것도 가능하다.

>>> 1 - -3
4

>>> 1 --3
4

>>> 1- -3
4

>>>1--3
4

하지만 보이는 것처럼, 모든 같은 결과를 가졌지만 매우 헷갈리는 형태를 띄고 있다. 네 개의 예제 중에서 PEP 8에 가장 순응하는 것은 첫 번째 예제이다. 하지만, 첫 번째 예제도 다음과 같이 두 번째 숫자를 괄호에 감싸줘서 더욱 가독성이 좋게 수정할 수 있다.

>>> 1 - (-3)
4

괄호를 사용함으로써 코드를 더욱 명확하게 만들어주었다. 컴퓨터는 코드를 실행 시키지만 사람은 그 코드를 읽는다는 점은 다시 한번 명심해야 한다.


곱셈 (Multiplication)

곱셈은 * 연산자와 함께 사용된다. 곱셈도 덧셈이나 뺄셈과 같은 규칙을 가진다.

>>> 3 * 3
9

>>> 2 * 8.0
16.0

나눗셈(Division)

나눗셈은 / 연산자와 함께 사용된다.

>>> 9 / 3
3.0

>>> 5.0 / 2
2.5

덧셈, 뺄셈, 곱셈 연산과는 다르게 나눗셈 연산은 항상 소수를 반환한다. 만약 정수를 반환받고 소수점을 정수로 변환하기위해 int() 함수를 사용할 수 있다.

>>> int(9 / 3)
3

int() 함수를 사용하면 소수점은 항상 버려진다는 것을 잊지 말아야한다. 다음 예제에서 보이는 것과 같이 5.0 / 22.5를 반환해야 정상이지만 int() 함수는 .5 부분을 버리고 정수 2만 반환하는 것을 확인할 수 있다.

>>> int(5.0 / 2)
2

버림 나눗셈(Floor Division)

위에서처럼 나눗셈의 몫만 얻기 위해 int(5.0 / 2)를 사용할 수도 있겠지만, 파이썬에서는 나눗셈의 결과에서 소수점 이하는 버리는 버림 나눗셈(floor division)을 지원한다. 버림 나눗셈은 // 연산자와 함께 사용된다.

>>> 9 // 3
3

>>> 5.0 // 2
2.0

>>> -3 // 2
-2

// 연산자는 먼저 왼쪽에 있는 숫자를 다음에 오는 숫자로 나누고 정수로 반 내림한다. 즉, 하나의 숫자라도 음수이면 예상한 결과와는 다른 숫자를 얻을 수도 있다.

예를 들어, -3 // 2-2를 반환한다. -32로 나누어져 -1.5가 되고, -1.5는 반 내림되어 -2가 된다.  반면에 3 // 21을 반환한다.

만약 어떤 수를 0으로 나누면 파이썬은 ZeroDivisionError을 일으킨다.

>>> 1 / 0
Traceback (most recent call last):
	File "<stdin>", line 1, in <module>
ZeroDivisionError: division by zero

지수승(Exponents)

** 연산자를 사용해서 거듭제공을 수행할 수 있다. 정수와 실수 모두 사용이 가능하다.

>>> 2 ** 2
4

>>> 2 ** 3
8

>>> 2 ** 4
16

>>> 3 ** 1.5
5.196152422706632

>>> 9 ** 0.5
3.0

또한, 숫자를 음의 거듭제곱을 할 수도 있다.

>>> 2 ** -1
0.5

>>> 2 ** -2
0.25


나머지 연산(Modulo)

모듈로(modulo) 연산이라고도 불리는 % 연산자는 왼쪽 피연산자를 오른쪽 피연산자로 나눈 나머지를 반환한다.

>>> 5 % 3
2

>>> 20 % 7
6

>>> 16 % 8
0

산술 표현식(Arithmetic Expressions)

파이썬에서는 연산자를 결합하여 복합적인 표현식을 구성할 수 있다. 표현식(expression)이란 파이썬이 값을 반환하기 위해 계산하거나 평가하는 숫자, 연산자, 및 괄호의 조합이다. 다음 예제를 살펴보자.

>>> 2*3 - 1
5

>>> 4/2 + 2**3
10.0

>>> -1 + (-3*2 + 4)
-3

표현식은 일반 수학의 사칙연산 순서(order of operations)와 방식과 동일하게 평가된다. *, /, //, 그리고 % 연산자는 같은 우선 순위를 가지고 +- 연산자보다 먼저 계산 된다.

Reference