예를 들어, 2와 3이라는 두 수를 계산할 때 사용되는 '+'나 '*' 같은 기호가 바로 '연산자'라는 것이죠. 프로그래밍 세계에서곱하기를 할 때는 '*' 연산자를 쓰고, 나눗셈을 할 때는 '/' 연산자를 씁니다.
원래 계산이라는 게 그렇습니다. 계산되는 수는 같은데 어떤 연산자를 쓰느냐에 따라 계산 결과가 달라집니다. 너무 당연한 이야기인가요?
컴퓨터는 궁극적으로 수 number를 계산하는 기계입니다. 그래서 수를 계산하기 위한 연산자도 여러 가지가 있습니다. 지난 시간에, 파이썬이라는 프로그래밍 언어에서 정의한 사칙연산 기호에는 아래와 같이 네 가지가 있다고 배웠습니다.
덧셈은 +
뺄셈은 -
곱셈은 *
나눗셈은 /
컴퓨터는 계산만 할까요? 아닙니다. '비교'도 합니다. '할당'도 합니다. '식별'도 하고요. '논리 연산'이라는 것도 있습니다. 아무튼 연산에는 수많은 종류가 있습니다. 꼭 더하고 빼는 '계산'만 연산이 아닙니다.
컴퓨터 입장에서 보면 계산, 비교, 식별, 할당 등이 모두 '연산'입니다. 그래서 '연산자'란 '어떤 작업을 하기 위해 사용하는 기호'로 정의하는 게 좋습니다. 일종의 도구나 연장 같은 것이죠. 오늘은 그중에서 '계산'에 관계된 나머지 연장, 즉 연산자를 마저 알아볼 것입니다.
계산에 관한 작업을 하는 연산자.이것을 있어 보이는 말로 '산술 연산자'라고 부릅니다.
연산 operation
연산자 operator
산술 연산자 arithmetic operator
서론이 길었는데요, 나머지 산술 연산자를 알아보기 전에 약간 특이한 것을 알려드리겠습니다.
계산에서 더하기 기호는 '+'입니다. 수를 더하는 연산자이지요. 그런데 이것이 문자 출력에도 사용됩니다.
print(2 + 3) 하면 실행 결과는 5입니다.
그런데
print('2' + '3')를 출력하면 어떻게 될까요?
'23'이 출력됩니다.
이건 23이라는 수가 아닙니다. '23'이라는 문자열입니다. 즉, '+' 연산자는 특이하게도 문자나 문자열을 묶어주는 기능도 있습니다. 계산을 하는 게 아닙니다. 문자들을 이어 붙여서 하나의 문자열로 만들어 줍니다.
그래서
print('나는' + '서울사람이다')를 실행하면 아래와 같이 출력됩니다.
나는서울사람이다
print('나는' + 3)이라고 하면 어떨까요? '나는'이라는 문자열 옆에 '3'이라는 숫자를 붙여줍니다.
나는3
곱하기 연산자 '*'가 좀 특이합니다. 얘는 문자/문자열을 원하는 만큼 반복해서 출력해 줍니다.
print('나는' * 3)을 실행하면 아래와 같이 출력됩니다.
나는나는나는
꼭 기억해 두시기 바랍니다.
자, 서론의 서론이 길었습니다. 이제 본론으로 들어가겠습니다.
첫째, 파이썬에서 거듭제곱을 표현하려면 '*' 연산자를 두 번 연달이 쓰면 됩니다.
지수 연산자 **
print( 3 ** 2 ) 코드는 9를 출력합니다. 3의 거듭제곱, 즉 3의 2승을 연산한 것이죠.
11의 20승은 얼마일까요?
672749994932560000000입니다.
print(11 ** 20)이라고 코딩을 하면 됩니다.
둘째, 파이썬에서 나눗셈을 할 때 몫과 나머지를 구하려면 각각 '//'과 '%' 연산자를 사용하면 됩니다.
나눗셈 연산자 /
나눗셈에서 몫을 구하는 연산자 //
나눗셈에서 나머지를 구하는 연산자 %
'10 나누기 3'의 코드는
print(10/3)입니다.
결과는 예상하시다시피 3.3333333333333335입니다.
'10 나누기 3'에서 몫은 '3'이지요? 그리고 나머지는 '1'입니다. 코딩을 해 볼까요?
print(10//3)
print(10%3)
'10%3'은 10의 3퍼센트를 계산하라는 게 아닙니다. '10을 3으로 나누고 난 나머지'를 구하는 연산입니다.
어떤가요? 코딩이 어렵게 느껴지시나요?
알기는 다 아는데, 일부러 정의를 내리고 이름을 붙여주고 하니까 어려워 보이는 것입니다. 그게 바로 '언어'인 것 같습니다. 이렇게 하고, 저렇게 하자고 약속을 하는 것이지요. 한국어나 영어 같은 자연언어도 약속입니다. 연산도 언어이고, 수학도 언어이며, 코딩도 언어입니다. 약속된 인공적인 말로 컴퓨터에게 명령을 내리는 것이 바로 '코딩'입니다.
언어 language
프로그래밍 언어 programming language
자연 언어 natural language
어떤 종류의 약속이든지, 약속을 이해하고 또 지키기란 어렵습니다. 그래서 자연스러워질 때까지 꾸준히 연습하는 게 중요합니다. 사람마다 성취하는 시간은 다르겠지만, 꾸준히만 한다면 언젠가는 코딩도 자연언어만큼 자연스럽게 구사할 날이 올 것이라 확신합니다. 꾸준함이 자유로움을 약속합니다.
Quiz
오늘도 퀴즈를 풀어보세요.
1. '3.14의 12승'은 얼마일까요? 코드를 짜 보세요.
2. 몫으로 '10'이 출력되는 파이썬 코드를 짜 보세요. 사용되는 수는 어떤 것이든지 상관없습니다.
3. 나머지가 '3'이 출력되는 파이썬 코드를 짜 보세요. 사용되는 수는 어떤 것이든지 상관없습니다.