콘텐츠로 건너뛰기

초보자를 위한 파이썬 데이터 타입과 변수

파이썬의 기본 데이터 타입과 변수에 대해 알아보자.

■ 변수: 데이터를 저장하는 공간

컴퓨터가 연산할 때는 먼저 저장 공간(메모리)를 생성하고 그 곳에 특정 값을 넣는다. 이러한 공간을 변수라고 하는데 파이썬에서 변수를 생성할 때는 대입연산자 ‘=’을 사용한다(같다의 =이 아니니 주의하도록 하자).

a = 1 # 정수형(int)
b = 5.5 # 실수형(float)
c = None # 어떤 데이터 타입을 넣을지 정해지지 않을 때 사용

a, b와 같이 = 왼쪽에 위치하는 것이 변수 이름이다. = 오른쪽에는 또 다른 변수나 값이 온다. 참고로 주석은 # 으로 단다. # 뒤의 코드는 실행되지 않는다.

변수는 선언하는 동시에 값을 초기화해줘야 한다. 만약 어떤 값을 넣어야할 지 모른다면 None을 넣어 출력한다.

■ 왜 변수화 하는가?

변수는 ‘추상화’를 위해 사용한다. 예를 들어 내 나이를 출력하는 프로그램을 만든다고 하자. 만약 print(“내 나이는 30살이다.”) 로 나이를 표현하려고 하면 매년 해당 코드를 31, 32, 33으로 바꿔야만 한다.

따라서 우리는 해당 코드에 값을 직접 대응시키지 않고 코드를 짜야한다. ‘age’라는 변수를 사용하고 해당 변수에 나이를 구하는 함수를 적용하는 식으로 말이다.

그 외에도 정확한 값을 모르고 있더라도 변수 이름만으로도 코드를 수정할 수 있다는 점과 해당 변수에 대응되는 값을 일괄적으로 변경 가능하다는 등의 이유로 변수를 사용한다.

■ 변수 이름 짓는 규칙

변수 이름은 사용자가 자유롭게 지정가능하다. 그러나 몇 개의 규칙이 있다.

  1. 영문 대소문자, _, 숫자로 구성 가능하다.
  2. 숫자로 시작할 수 없다.
  3. 예약어(Reserved keywords)를 변수 이름으로 지정할 수 없다.

변수는 보통 간결한 단어로 사람이 이해하기 쉽게 표현한다. 협업을 위해서는 example 보다는 student_id, teacher_id와 같은 변수가 좋다.

변수 이름을 숫자로 시작할 수 없는 것은 특정 값과 헷갈리기 때문이다.

파이썬이 이미 선점해놓은 단어(예약어) 또한 지정할 수 없다. 예를 들어 for, while 등이 있고, 이러한 예약어는 녹색으로 표시된다. 만약 for이라는 변수 이름을 굳이굳이 만들고 싶다면 _for 과 같이 변형해서 쓰면 된다.

■ 숫자형 데이터: 정수와 실수

숫자는 우리가 흔히 아는 정수 타입과 실수 타입이 있다.

정수끼리 덧셈, 곱셈, 뺄셈을 할 경우 정수가 나온다. 나눗셈을 하면 실수가 나올 수 있다. 나눗셈의 몫만 구하려면 / 대신에 // 를 사용하면 된다. 실수 타입을 정수 타입으로 바꾸려면 int() 를 이용하면 된다.

소숫점을 표시할 수 있는 데이터 타입은 실수 타입이다. float()을 사용하면 정수를 실수로 변환할 수 있다.

■ 숫자형 데이터의 연산

기본적으로 우리가 익숙한 연산은 다 가능하다. 아래 예시를 보면 좀 더 직관적으로 이해가 될 것이다.

# 비교 연산자의 표시 방법. 결과는 불린(boolean) 값으로 True, False 2개의 값만 가진다.

print(a > b) # a가 b보다 크다.
print(a < b) # a가 b보다 작다.
print(a >= b) # a가 b보다 크거나 같다.
print(a <= b) # a가 b보다 작거나 같다.
print(a == b) # a와 b가 같다.
print(a != b) # a와 b가 같지 않다.

print(a + b) # 덧셈
print(a * b) # 곱셈
print(a - b) # 뺄셈
print(a / b) # 나눗셈
print(a % b) # 나머지 값
print (a ** b) # 지수승
print(a+b * 2) # 연산자의 우선순위는 일반적인 순서를 따른다.
print((a+b) * 2) # 연산자 우선순위를 강제하고 싶다면 () 소괄호로 묶는다.

참고로 변수의 값은 ‘대입’이 발생하기 전에 바뀌지 않는다.

a = 9
print(a - 3) # 결과값: 6 (9-3 = 6)
print(a) # 결과값: 9

# 만약 a 값을 a-3 으로 바꾸고 싶다면,
a = a -3 # 대입시켜줘야한다.
a -= 3 # 또는 왼쪽처럼 표현할 수도 있다.


■ 문자열 데이터(str)

문자열 데이터 생성도 간단하다. ‘ 또는 ” 를 사용하면 된다.

a = 'Hi'  # 문자열 내에 큰 따옴표를 사용하고 싶을 때 사용

b = "Hi" # 문자열 내에 작은 따옴표를 사용하고 싶을 때 사용

c = '''Hi,
Lucy!''' # 문자열 내에 공백을 두고 싶을 때

d = """Hi,
Lucy!"""

인덱스로 특정 문자열을 반환할 수도 있다. 인덱스란 문자열의 순서를 말하는데 공백 등의 기호도 자리를 차지한다.

인덱스의 범위는 0부터 시작하여 문자열의 길이까지만 유효하다. 파이썬은 음수 인덱스를 지원하는데 -1은 문자열의 가장 마지막 인덱스를 의미한다.

a = 'Hi,\t Lucy! \n Welcome!') # 이스케이프 문자: \n 엔터 \t: 탭

print(a[1]) # a 문자열의 1번째 자리에 있는 i 가 반환된다.
print(a[-1]) # 가장 마지막 인덱스를 출력
print(a[-2]) # 마지막에서 두번째 인덱스 출력

print(a[1000]) # 에러 => 문자열 범위 벗어남
print(a[-1000]) # 마찬가지로 에러

슬라이싱(Slicing)은 문자열의 부분 추출을 말한다. 마지막은 포함하지 않고 그 전까지 출력된다.

print(a[4:9]) # 4번부터 8번까지 출력
print(a[4:8]) # 4번부터 7번까지 출력
print(a[4:]) # 4번부터 끝까지 출력
print(a[:4]) # 처음부터 3번까지 출력
print(a[:]) # 처음부터 끝까지 출력


■ 문자열 데이터의 함수

변수 다음에 .을 타입하고 탭을 누르면 여러 가지 함수 리스트가 뜬다.

a.upper() # 모두 대문자로 변경
a.replace('h', 'b') #모든 h를 b로 바꿔라

포맷(format)은 문자열 내 특정 값을 변수로 초기화하여 동적 문자열 생성해준다.

month = 7
day = 1
ex = '오늘은 {}월 {}일입니다.'
ex.format(month, day)
print(ex)

스플릿(split)은 특정 문자로 구분하여 문자열의 리스트로 치환해준다.

ex = '안녕! 내 이름은 루씨야.'
ex.split() # 띄어쓰기를 기준으로 구분
ex.split(!) # 느낌표를 기준으로 구분


■ print 함수

마지막으로 print 함수에 대해 알아보자. print 함수는 해당 변수의 값을 출력시켜준다. ,를 기준으로 여러 변수를 나열하여 한 줄에 출력할 수도 있다.

print(a, b) # a, b 순서대로 출력
print(b, a) # b, a 순서대로 출력
print(1, 2.0, 3, a) # 1, 2.0, 3, a 순서대로 출력

함수에 대한 설명을 보고 싶을 땐 shift+tab 을 누르면 된다. print의 경우, 구분자(sep)은 ‘ ‘ 이다. 설명을 보고 출력 값을 자유자재로 바꿀 수 있다.

print(a, b, sep='@', end='^^') #구분자를 '@'로 바꾸고 '^^'로 끝낸다.
태그: