6.2 변수로 계산하기

변수를 만드는 방법을 알아보았으니 이번에는 변수를 활용하여 계산을 해보겠습니다.

>>> a = 10
>>> b = 20
>>> c = a + b
>>> c
30

변수 a, b에 숫자를 할당한 뒤에 ab의 값을 더해서 변수 c에 할당했습니다. 이렇게 변수는 변수끼리 계산할 수 있고, 계산 결과를 다른 변수에 할당할 수 있습니다.

6.2.1 산술 연산 후 할당 연산자 사용하기

그럼 변수 a의 값을 20 증가시키려면 어떻게 해야 할까요? a + 20처럼 20을 더하면 30이 나오지만 a의 값을 다시 출력해보면 10이 나옵니다.

>>> a = 10
>>> a + 20
30
>>> a
10

a + 20a에 20을 더하기만 할 뿐 계산 결과를 유지하지 않습니다. 변수 한 개에서 값의 변화를 계속 유지하려면 계산 결과를 다시 변수에 저장해야 합니다.

>>> a = 10
>>> a = a + 20    # a와 20을 더한 후 결과를 다시 a에 저장
>>> a
30

이렇게 a = a + 20과 같이 a에 20을 더한 값을 다시 a에 할당해주면 계산 결과가 계속 유지됩니다. 그런데 a를 두 번 입력해야 하니 조금 번거롭죠? 파이썬에서는 변수를 두 번 입력하지 않도록 산술 연산 후 할당 연산자를 제공합니다.

>>> a = 10
>>> a += 20    # a와 20을 더한 후 결과를 다시 a에 저장
>>> a
30

a에는 10이 들어있고 a += 20을 수행하면 a에는 10과 20을 더한 결과인 30이 들어갑니다. +=처럼 산술 연산자 앞에 =(할당 연산자)를 붙이면 연산 결과를 변수에 저장합니다(+ =처럼 두 연산자를 공백으로 띄우면 안 됩니다). 즉, a += 20a = a + 20을 축약한 형태입니다.

여기서는 덧셈(+=)만 해보았는데 뺄셈(-=), 곱셈(*=), 나눗셈(/=, //=), 나머지(%=)도 같은 방식입니다. 똑같이 연산(-, *, /, //) 후 할당(=) 한다는 뜻입니다.

산술 연산 후 할당 연산자를 사용할 때는 주의할 점이 있습니다. 다음과 같이 만들지 않은 변수 d에 10을 더한 후 다시 할당하면 에러가 발생합니다.

>>> d += 10    # d는 만들지 않은 변수
Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    d += 10
NameError: name 'd' is not defined 

왜냐하면 계산 결과를 d에 할당하기 전에 d와 10을 더해야 하는데 d라는 변수가 없어서 덧셈이 안 되기 때문입니다. 따라서 연산 후 할당을 하려면 값이 들어있는 변수를 사용해야 합니다.

참고 | 부호 붙이기

계산을 하다 보면 부호를 붙여야 하는 경우도 생깁니다. 이때는 값이나 변수 앞에 양수, 음수 부호를 붙이면 됩니다.

>>> x = -10
>>> +x
-10
>>> -x
10

양수, 음수 부호 붙이기는 수학 시간에 배운 내용과 같습니다. -10에 + 부호를 붙이면 부호의 변화가 없고, -10에 - 부호를 붙이면 양수 10이 됩니다.