류나의 작은 DB

27살 류나의 바르고 다르게 살기

Programming/Basic Python

포덕의 파이썬: 1-1. 숫자 사용하기

Ryuna (류준범) 2020. 7. 20. 20:57

프로그래밍 언어를 처음 배울 때는 숫자를 사용하는 법, 그리고 사칙연산부터 다루곤 합니다. 그래서 파이썬에 대해 가장 먼저 다룰 주제는 숫자입니다.

파이썬의 숫자 살펴보기

파이썬에서 사용할 수 있는 숫자에는 크게 두 가지가 있습니다.

  • 정수(Integer) – int
  • 실수(부동소수점수, Floating-point number) – float

정수는 말 그대로 자연수와 음의 정수, 0을 포함하는 개념이고, 실수는 소수점이 포함된 숫자를 이야기합니다. 수학적으로는 정수도 실수의 일부이지만, 컴퓨터에서는 정수와 실수를 구분해 두는 경우가 많고 파이썬도 그러합니다.

 

파이썬을 계산기로 사용해 볼까요?

>>> 5 + 3
8
>>> 6 - 2
4
>>> 7 * 4
28 

간단한 덧셈, 뺄셈, 곱셈의 예시입니다.

>>> 9 / 4
2.25
>>> 9 // 4
2
>>> 9 % 4
1
>>> divmod(9, 4)
(2, 1) 

나눗셈은 조금 특별합니다. 두 가지 방법이 있거든요.

  • /는 일반적인 나눗셈으로, 결과가 실수 형태로 출력됩니다.
  • //는 정수의 나눗셈으로, 몫이 정수 형태로 출력됩니다.

//가 몫을 출력한다면, %는 나머지를 출력합니다.

divmod를 이용하면 몫과 나머지를 동시에 얻을 수 있습니다. (이건 지금 완전히 이해하지 않아도 됩니다. 나중에 나올 ‘튜플’의 개념을 담고 있거든요.)

>>> 3 ** 4
81 

** 연산자도 알아두면 좋습니다. x ** y는 x의 y제곱 결과를 출력합니다.

 

산수에서 덧셈, 뺄셈보다 곱셈, 나눗셈의 우선순위가 높듯이, 파이썬에서도 곱셈과 나눗셈은 더 높은 우선순위를 가집니다. 그 외에도 우선순위가 높은 연산자와 낮은 연산자가 있는데, 그 규칙을 모두 외울 필요는 없습니다. 코드를 쓸 때 먼저 계산되었으면 하는 식에 괄호를 사용하면 되거든요.

변수에 숫자 넣어보기

아직 변수의 개념을 상세히 다루지 않았지만, ‘a = 3’과 같이 변수에 숫자를 넣는 것은 프로그래밍을 처음 접하는 분들도 쉽게 이해할 수 있을 거라고 생각합니다.

>>> a = 150
>>> a
150 

포켓몬 킬가르도의 블레이드폼 공격 종족값은 150이었습니다. a라는 변수에 150을 할당하고, a의 값을 출력하면 150이 출력됩니다.

>>> a = a - 10
>>> a
140 

이런! 최신작에서 킬가르도의 종족값이 10 하향되었네요. 이를 반영해 주기 위해서는, a에 a-10이라는 새로운 값을 할당해 주면 됩니다. 그 뒤 a의 값을 출력하면 140이 출력됩니다.

 

이 부분은 프로그래밍을 처음 접하는 분이라면 혼란스러울 수 있습니다. a = a – 10이라는 식은 수학에서 봤을 때는 이상하거든요. 하지만 프로그래밍 언어에서 = 기호는 ‘같다’가 아닌 ‘할당한다’를 의미합니다. 그리고 =의 오른쪽이 왼쪽보다 먼저 계산되기에, “a의 기존 값에서 10을 뺀 값을 a의 새 값으로 한다”는 의미가 됩니다.

>>> a = 100
>>> a += 10
>>> a
110 

= 앞에 연산자를 결합하는 방법을 사용할 수 있습니다. 위 예시에서 a += 10은 a = a + 10과 완전히 같은 의미이며, 이는 -=, *=, /= 등에도 똑같습니다.

>>> H = 88
>>> A = 120
>>> B = 75
>>> C = 100
>>> D = 75
>>> S = 142
>>> H + A + B + C + D + S
600 

변수 여러 개를 사용해 원하는 만큼의 계산을 할 수 있습니다. 위 예시에서는 드래펄트의 종족값 총합을 계산하고 있네요.

형변환

int() 함수는 값을 정수형으로 변환해 줍니다. float() 함수는 값을 실수형으로 변환해 줍니다.

>>> int(96)
96
>>> int(36.5)
36
>>> float(96)
96.0
>>> float(36.5)
36.5 

위와 같이 int() 함수로 실수를 정수로 변환하면 소수점을 버립니다.

>>> int('201')
201
>>> int('201.5')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '201.5' 

숫자로 된 문자열은 정수 및 실수로 변환할 수 있지만, int()의 경우 소수점을 포함한 문자열은 처리하지 않습니다. (문자열은 바로 다음 게시물에서 다룹니다.) 위의 두 번째 예시에 처음 보는 에러 내용이 있을 텐데, 이런 것을 ‘예외’라고 합니다. 예외는 오류를 경고하는 역할로, 나중에 제대로 다룰 기회가 있을 것입니다.

진수와 진법 변환

파이썬에서는 10진수 외에도 세 가지 진수를 표현할 수 있습니다.

  • 2진수(binary): 0b 또는 0B
  • 8진수(octal): 0o 또는는 0O
  • 16진수(hex): 0x 또는 0X

인터프리터에 이러한 수들을 입력하면 10진수로 변환해서 출력해줍니다.

>>> 0b101
5
>>> 0o11
9
>>> 0x1f
31 

int() 함수에는 사람들이 잘 모르는 기능이 더 있습니다. 바로 진법 변환인데요. 숫자로 된 문자열과 진법을 입력하면 10진수로 변환해 준답니다.

>>> int('3214', 5)
434 

 

1 2 3 4