Python - 기본적인 자료형과 연산자

728x90

앞에서는 변수와 콘솔 출력 함수에 대해 공부하였다.
이번 포스팅에서는 기본적인 자료형과 연산자에 대해 알아보도록 한다.

사람은 숫자와 문자를 자연스레 구분할 수 있지만, 컴퓨터는 그렇지 않다. 그 때문에 컴퓨터로 정보를 처리하려면 꼭 처리할 정보가 어떤 형식인지 명시해주어야 한다. 파이썬은 자료형을 자동으로 판별해주지만, 때에 따라 자료형을 명시해주어야 하는 경우도 발생한다. 자료형을 알고 코딩한다는 것은 내가 처리하려는 정보에 대해 자세히 파악하고 있다는 의미이며, 이는 프로그래머의 아주 중요한 자질 중 하나이다.

우리는 앞서 콘솔 출력 함수인 print 함수를 배웠다. 이제는 콘솔 입력 함수를 알아보자! 

지금까지 코드에 연산할 숫자를 코드 안에 변수로 선언했지만, 콘솔 입력 함수를 사용하면 원하는 값을 콘솔 창에 직접 입력할 수 있다. input()은 가장 기초적인 콘솔 입력 함수이며, 사용자가 콘솔 창에 입력한 값을 변수에 저장한다.  input 함수의 소괄호() 안에는 입력받는 값에 대한 설명을 적는다

a = input("값을 입력하세요 :")
print(a)

위와 같이 코드를 작성할 경우 사용자가 입력한 값을 그대로 출력한다.

이번에는 콘솔 입력 함수를 사용 시 자료형에 대해 고려해야 할 부분을 알아보기로 하자, 먼저 두 값을 입력받은 뒤 그 값들을 더한 결괏값을 출력해보자

a = input("첫번째 숫자를 입력하세요 :")
b = input("두번째 숫자를 입력하세요 :")
print("두 수를 더한 결과는 :", a + b , "입니다.")

예를 들어 a에 10b에 20을 입력하였다면 결과는 "두 수를 더한 결과는 : 30입니다." 문자열이 나타날 것이라 예측하였을 것이다. 
하지만 결과는 "두 수를 더한 결과는 :1020입니다."라는 결과가 나온다. 

왜 이런 결과가 나왔을까? 

input()은 입력한 값을 '문자열'로 저장한다. 따라서 1과 3을 입력한 뒤 두 값을 + 연산하면, 문자열 두 개를 연결하여 13이 출력된다.
이 때문에 입력받은 값을 숫자 연산을 하고 싶다면 해당 값을 정수형(int) 혹은 실수형(float)으로 변환해야 한다.

a = int(input("정수를 입력하세요 :")
b = float(input("실수를 입력하세요 :")
print("두 수를 더한 결과는: ", a + b + "입니다.")
print(type(a+b))

위의 코드를 실행하였을 때 결괏값은 a 정수와 b 실수를 더한 값이 제대로 출력되고, a + b의 타입은 float 형으로 출력된다.

파이썬에서는 자료형이 자동으로 지정되는 경우가 다수이다. 이때, 변수의 자료형을 확인하고 싶다면 type() 함수로 알아낼 수 있다.

숫자형

숫자형이란 숫자 형태로 이루어진 자료형으로, 수학 시간에 배운 숫자의 구분과 비슷하다.

숫자형 코드예시
정수(int) 1, 2, 0, -10
실수(float) 3.15, -23.1
복소수(complex) j, 2j, 3+2j, 1+2j
16진수 0xDA
02진수 0b110101

정수형은 일반적인 정수이며, 프로그램에서 int형이라 저장된다.
실수형은 소수점이 포함된 숫자로, 프로그램에서 float형이라 저장된다.
복소수형은 허수를 포함한 수를 의미하고, 실수부는 "변수.real" 허수부는 "변수.imag"로, 켤레복소수는 "변수.conjugate()"로 반환한다.
16진수는 Hex의 x를 따와 0x1A 형태로, 2진수는 1과 0으로 표현한다. 이 모든 수는 따로 형변환 없이 연산 가능하며 10진수로 출력한다.

정수 + 실수 --> 실수 
정수 + 복소수 --> 복소수 

의 연산결과가 나타난다.

불(bool)형

참(True)과 거짓(False)을 다루는 'bool'형에 대해서도 알아보자. bool형은 간단한 자료형이지만 프로그램 실행 흐름을 제어할 때 사용하기 때문에 매우 신중히 사용해야 한다. bool형을 초기화하는 형식은 "변수 = True/False"이며, True나 False의 앞글자는 반드시 대문자로 입력해야 한다. 앞에서 간략하게 훑어봤던 '조건문'은 bool형과 바늘과 실의 관계이다.

a = True;

if (a):
	print("참")
else :
	print("거짓")

위 코드는 간단한 조건문 그리고 bool형의 조합이다. a가 'True' 면 '참'이 그 외에는(False 포함) '거짓'이라고 출력되는 코드이다.

자료형의 참/거짓

파이썬에서 True/False를 사용할 때 주의해야 할 것은 주어진 조건에 대한 참/거짓뿐만 아니라 값의 존재 여부에 따라서도 판별한다는 점이다. 다른 컴퓨터 언어에서는 0과 1을 참/거짓으로 많이 사용하지만, 파이썬은 좀 더 범위를 넓혀 값이 존재하면 참, 존재하지 않으면 거짓으로 판별한다. 

값에 대한 참/거짓 구분
"Goorm", "hello"등 어떤 문자열 True
"" False
[1,2,3] True
[], (), {} False
1 True
0, None False

 

  1. "" 안에 문자 혹은 문자열이 '존재'하므로 True를 뜻한다. 즉, 따옴표 안에 문자가 없다면 어떤 값도 존재하지 않음으로 False를 출력한다. 따옴표는 그저 문장의 시작과 끝을 알려주는 도구임을 다시 확인할 수 있다.
  2. 괄호 또한 따옴표와 마찬가지로 생각한다. 괄호는 각 값을 묶어 보관하는 도구일 뿐, 문자를 뜻하지는 않는다.
  3. 일반적으로 숫자 0은 존재하지 않음을 뜻하므로 파이썬에서 또한 False로 나타난다.

이제 파이썬의 세 가지 연산자들에 대해 배워보자

수식 연산자

여러 자료형의 변수를 연산하는 '연산자'에 대해 알아보자. 수식 연산자는 두 개의 피연산자를 요구하는 이항 연산자(binary operator)이다. 

종류 기능 사용 가능한 자료형
+ 두 값을 더한다 정수, 실수, 복소수, 문자
- 왼쪽 값에서 오른쪽 값을 뺀다 정수, 실수, 복소수
* 두 값을 곱한다. 정수, 실수, 복소수
/ 왼쪽 값을 오른쪽 값으로 나눈다. 정수, 실수, 복소수
% 왼쪽 값을 오른쪽 값으로 나눈 나머지를 반환한다.  

연산자는 두 개를 겹쳐 사용할 때 다른 의미를 가지기도 한다.

종류 기능 사용 가능한 자료형
** 왼쪽 값을 오른쪽 값만큼 제곱한다. 정수, 실수, 복소수
// 왼쪽 값을 오른쪽 값으로 나눈 몫을 반환한다. 정수

앞으로 프로그래밍에서 숫자 데이터는 많이 다루게 될 것이다. 특히 * 연산자는 문자 * 숫자 형태로 사용할 수 있다는 예외를 기억하자! 

또 파이썬에서 문자열 + 숫자는 불가능하지만, 정수 + 실수와 같이 연산 대상인 변수가 모두 숫자라면 int형이든 float형이든 자유롭게 연산할 수 있다. 

논리 연산자

논리 연산자는 두 bool형 변수의 논리 연산을 위해 사용하며, 합집합, 교집합, 차집합의 개념과 동일하다. 

종류 기능 설명
and 두 값이 모두 True일 때만 True를 반환한다

T and T = T

T and F = F

or 두 값 중 하나라도 True이면 True를 반환한다

T or T = T

F or T = T

not False이면 True를, True이면 False를 반환한다

not False = True

not True = False

이와 같은 논리 연산자는 추후 조건문과 함께 자주 사용하니 종류와 기능에 대해 숙지하자! 

관계 연산자

관계 연산자는 두 값의 대소 혹은 동등의 관계를 따지는 연산자이다.

종류 기능
== 두 값이 같은지 비교한다
!= 두 값이 다른지 비교한다

<=

오른쪽 값이 왼쪽 값보다 더 큰가 비교한다.

=가 추가되면 크거나 같은지 비교한다.

>

>=

왼쪽 값이 오른쪽 값보다 더 큰가 비교한다.

=가 추가되면 크거나 같은지 비교한다.

 

출력 결과는 어떤 숫자 값이 아니라 True, False로 나오게 된다. 관계 연산자는 반복문, 조건문에서 조건식으로 매우 자주 사용한다.

 

728x90

'프로그래밍 공부 > Python' 카테고리의 다른 글

Python - 문자열(String)  (0) 2019.11.28
Python - 변수와 콘솔 출력 함수  (0) 2019.11.22
Python - 조건문  (0) 2019.11.22
Python - 반복문  (0) 2019.11.22
파이썬(Python)이란?  (0) 2019.11.22