본문 바로가기

파이썬

[ 코랩과 파이썬 ] 2. python 변수와 스칼라 scalar 자료: 숫자, 문자, 불리언

반응형

1) 변수(variable)

 

파이썬 자료에 대해 알아보기 전에 변수에 대해서 명확히 알아야만 한다. 변수(variabe)는 변하는 값을 의미하며 변인이라고 한다. 변하지 않는 값은 변수가 아니라  상수(constance)라고 한다. 여성만 있는 학교에서 성별은 변수가 아니라 상수이다. 하지만 남녀 공학에서 성별은 남성과 여성으로 변하는 값이기 때문에 변수가 된다. 

이처럼 변수는 변하는 값을 가져야 한다. 변수의 역학은 값을 저장하거나 담아 놓는 것이다. 하지만 이 값은 언제든지 다른 값으로 바꿀 수 있다. 예를 들어, soccer 라는 변수를 만들어서 “손흥민”을 저장하려면, soccer = “손흥민” 으로 표현한다. 이때 “손흥민”은 언제든지 다른 값으로 바뀌거나 다른 값이 추가될 수 있다.

변수명은 임의로 만들 수 있지만 변수에 포함될 값들의 의미를 파악할 수 있는 것으로 만드는 것이 좋다. 그래야 코딩하는 과정에서 변수명이 많아지더라도 혼동하지 않는다. 

변수명은 알파벳, 숫자, 언더바(_)를 조합해 선언되고 대문자와 소문자를 다른 변수로 인식한다. 즉, Soccer와 soccer는 철자는 같지만 서로 다른 변수이다. 변수를 만들 때 유의할 점은 파이썬에서 사용하는 기본 명령문인 예약어를 변수명으로 사용할 수 없다는 것이다. 예약어를 변수명으로 사용하면 파이썬이 프로그램을 실행시키는 과정에서 명령어인지 예약어인지 구분을 하지 못해 에러가 나거나 전혀 다른 결과를 보여줄 수 있다.

 

예약어 and, exec, not, assert, finally, or, break, for, pass, class, from, print, continue, global, raise, def, if, return, del, import, try, elif, in, while, else, is, with, except, lambda, yield

 

2) 스칼라(scalar) 자료(숫자, 문자, 불리언)

 

(1) 숫자형 자료

 

숫자형 자료는 정수형(Integer Type: 10진수, 2진수, 8진수, 16진수), 실수형(Floating-point Type), 복소수형(Complex Type)으로 나눌 수 있다. 그럼 정수형부터 복소수까지 자세히 살펴보도록 하자.

정수형 자료

 

정수란 자연수인 양의 정수와 음의 정수, 0을 포함한 수의 집합이다. 파이썬에서 10진수는 숫자 그대로 사용하며, 나머지 진수는 진수를 나타내는 숫자와 영어를 섞어서 몇 진수를 알 수 있도록 표시한다.

 

i = 10            # 10진수(Decimal)
b = 0b010         # 2진수(Binary)는 앞에 0b를 붙여서 표현
o = 0o010         # 8진수(Octal)는 앞에 0o를 붙여서 표현
h = 0xABC         # 16진수(Hexadecimal) 0x를 붙여서 표현, 10부터는 A~F 알파벳을 사용

 

파이썬에서 정수형 자료는 int() 함수를 사용하며, 이를 이용해 다른 형태의 자료를 정수형으로 바꿀 수 있다. 

 

int(3.14)          # 소수점 부분을 제외하고 정수부분만
int("3")           # 문자 '3'을 정수로
int('010', 2)      # 2진수 010을 정수로
int(True))         # boolean 값을 정수로 True => 1, False => 0으로

 

 

실수형 자료

 

실수는 유리수와 무리수를 포함한 수의 집합이다. 유리수는 분수로 나타낼 수 있는 수이고, 무리수는 순환하지 않은 무한 소수이다. 실수는 소수점으로 나타내거나 e를 이용한 지수법으로 표현할 수 있다. 

 

f = 12.34

e = 1234e-2

 

파이썬에서 실수형 자료는 float() 함수를 사용하며, 이를 이용해 다른 형태의 자료를 실수형으로 바꿀 수 있다. 

 

float(3)            # 정수 3을 실수 3.0으로
float("5")          # 문자 5를 실수 5.0으로
float(True)         # boolean True를 실수 1.0으로
float(False)        # boolean False를 실수 0.0으로

 

 

복소수형

 

복소수는 a+bj의 형태로 나타내고, a와 b는 임의의 실숫값을 가지며 이때 a를 실수부, b를 허수부라고 한다. 파이썬에서 복소수의 형태로 그대로 사용한다.

 

c = 10+98j
c.real                # 실수부의 값 10
c.imag                # 허수부의 값 98

 

파이썬에서 복소수형 자료는 complex() 함수를 사용하며, 이를 이용해 다른 형태의 자료를 복소수형으로 바꿀 수 있다. 

 

complex(10)        # 정수 10을 복소수 (10+0j)로
complex(3.14)      # 실수 3.14을 복소수 (3.14+0j)로
complex("10")      # 문자 10을 복소수 (10+0j)로  
complex(True)      # boolean True을 복소수 (1+0j)로 
complex(False)     # boolean False을 복소수 (0j)로

 

 

숫자형 자료 연산

 

숫자 자료형은 당연히 덧셈, 뺄셈, 곱셈, 나눗셈 등 사칙 연산이 모두 가능하다.

 

1+2
1-2*3
1/2+3*4
(1+2)*3/4

 

사칙 연산뿐 아니라 낯익은 수학적 함수를 이용해서도 연산을 처리할 수도 있다.

 

abs(-1)               # -10의 절대값
sum([2,3])            # 2와 3의 합 = 2+3
pow(4,2)              # 4의 2제곱
max(5,6,7)            # 5, 6, 7 중 최대값
min(5, 6, 7)          # 5, 6, 7 중 최소값
round(3.14)           # 소숫점 첫 째 자리에서 반올림(3), 소숫점 둘 째 자리에서 반올림은 round(3.14, 1) => 3.1
divmod(10, 5)         # 몫과 나머지(2, 0), 다르게 표현하면 (10//5, 10%5)와 같음

 

 

 

(2) 문자형 자료

 

문자열은 자음과 모음, 그리고 알파벳이 모인 단어, 단어가 모인 문장으로 구분할 수 있다. "Python"이라는 단어의 경우 "P", "y", "t", "h", "o", "n"으로 총 6개의 객체로 구성되어 있다. 한글의 경우 "파이썬"은 "파", "이", "썬" 3개의 객체를 이룬다. 

문자열 생성을 위해서 작은따옴표('python')와 큰따옴표("Python")를 사용한다. 문자열을 여러 줄로 줄 바꿈해서 만들 때는 작은따옴표 세 개('''   ''') 또는 큰따옴표 세 개("""  """)를 이용해도 되고 \n을 이용할 수 있다. 

유의할 점은 문자열 속에 ‘작은따옴표’가 이미 있을 경우 “큰따옴표”로 둘러싸고, “큰따옴표”가 있으면 ‘작은따옴표’로 둘러싸면 문자열에 포함된 따옴표를 그대로 살릴 수 있다.  \(역슬래쉬)도 같은 기능을 한다.

 

# 문자열 생성
s1 = "Python is interesting"        # 큰 따옴표 사용
s2 = 'Python is interesting'        # 작은 따옴표 사용

# 따옴표가 있는 문자열 생성
s3 = "python's interesting"                # 작은 따옴표를 포함한 문자열 생성    
s4 = 'I say, "Python is interesting"'      # 큰 따옴표를 포함한 문자열 생성
s5 = 'I say "Python\'s interesting"'       # 작은 따옴표와 큰 따움표 모두 모두 포함한 경우 \를 사용해 문자열 생성

# 여러 줄 문자열 생성
s6 = '''Python is interesting,                      # 작은 따옴표 3개를 이용해 줄바꿈 문자열 생성 
I don't think so'''

s7 = """Python is interesting,                      # 큰 따옴표 3개를 이용해 줄바꿈 문자열 생성          
I don't think so"""3

s8 = "Python is interesting,\nI don't think so"     # \n 을 이용해 줄바꿈 문자열 생성

 

문자열 자료 연산

 

문자열도 연산은 더하기(+)와 곱하기(*)를 이용해서 문자를 붙이는 역할을 한다. 더하기(+)는 문자열을 서로 연결하는 것이고 곱하기(*)는 문자열을 반복하라는 의미이다. 

 

s1 = "Py"
s2 = "thon"
s3 = s1+s2          # "Py" + "thon" = "Python"
s3*3                # "Python"*3 = PythonPythonPython

 

문자열 처리 함수 및 메서드

 

문자열은 숫자나 불리언보다 특별한 속성들이 많기 때문에 다양한 메서드와 함수들이 존재한다. 메서드와 함수를 이용해 문자열을 분리, 재생성 등을 쉽게 할 수 있다. 여기서 함수는 특정 기능을 독립적으로 수행하는 도구이고, 메서드는 함수처럼 어떤 기능을 수행하지만, 나중에 설명할 클래스 및 객체(object)에 연관되어야 호출이 가능하다. 예를 들어 abs(), sum() 등은 함수이고 s1.upper(), s1.split() 등은 메서드이다. 함수 편에서 보다 자세히 설명하기로 하자.

문자열을 처리할 수 있는 함수와 메서드를 정리하면 다음과 같다.

 

 
문자열 메서드 설명 예제 결과
capitalize() 문자를 대문자로 편화 "python".capitalize() Python
casefold() 모두 소문자로 변환 "Python".casefold() python
count() 포함된 문자 개수 "Python python".count("th") 2
find() 해당 문자의 위치(좌로부터 탐색): 오류 -1 출력 "Python python". find("th") 2
rfind() 해당 문자의 위치(우로부터 탐색): 오류 -1 출력 "Python python". rfind("th") 8
index() 해당 문자의 위치(좌로부터 탐색): 오류 에러 발생 "Python python". index("th") 2
rindex() 해당 문자의 위치(우로부터 탐색): 오류 에러 발생 "Python python". rindex("th") 8
join 공백문자로 문자 사이마다 연결 "_".join("Python") P_y_t_h_o_n
center(문자 길이) 문자 길이에 가운데 정렬 "Python".center(10) Python
rjust(문자 길이) 문자 길이에 오른쪽 정렬 "Python".rjust(10) Python
ljust(문자 길이) 문자 길이에 왼쪽 정렬 "Python".ljust(10) Python
lower() 모든 문자를 소문자로 변환 "Python".lower() python
upper() 모든 문자를 대문자로 변환 "Python".upper() PYTHON
title() 문자만 대문자로 변환 "python".title() Python
swapcase() 대문자는 소문자로, 소문자는 대문자로 변환 "Python".swapcase() pYTHON
partition(분할 문자) 분할 문자(왼쪽) 기준으로 양쪽 분류 "Python python". partition("h") (Pyth, h, on python)
rpartition() 분할 문자(오른쪽) 기준으로 양쪽 분류 "Python python". partition("h") (Python pyt, h, on)
replace() 문자열 교체 "Python".replace("Py", "F") Fthon
split(구분자) 구분자로 분리 "p y t h o n".split( ) ['P', 'y', 't', 'h', 'o', 'n']
rsplit(구분자, 구분수) 오른쪽으로 구분자를 이용해 구분 수만큼 분류 "p_y_t_h_o_n".rsplit( ) ['P_y_t_h', 'o', 'n']
splitlines() 라인 단위로 구분 "Py\nthon".splitlines( ) ['Py', 'thon']
zfill(자릿수) 자릿수에 비어있는 부분을 0으로 채움 "Py".zfill(8) 000000Py

 

 

위에 제시된 메서드와 함수 중에서 사용 빈도가 높은 것들을 파이썬을 이용해 코딩을 해보도록 하자. 이 정도의 문자열 함수는 반드시 기억하고 있어야 향후 문자를 다루는 분석에서 한층 쉽게 접근할 수 있다.

 

python = "Python is Interesting"          # python 이라는 변수에 문자열 저장
python.lower()                            # 모두 소문자로 변환
python.upper()                            # 모두 대문자로 변환
len(python)                               # 문자열의 길이 21
python.replace("Python", "R"))            # 변수 내 "Python"을 "R"로 변환
python.lstrip()                           # 가장 왼쪽 한칸 이상의 공백 삭제
python.rstrip()                           # 가장 오른쪽 한칸 이상의 공백 삭제
python.strip()                            # 양쪽 공백 삭제
python.split(" ")                         # 공백으로 분리: .split()의 ()에 분리시키고 싶은 기준을 넣어주면 됨

 

파이썬에서 문자형 자료는 str() 함수를 사용하며, 이를 이용해 다른 형태의 자료를 문자형으로 바꿀 수 있다. 

 

str(True)         # Boolean자료 True를 문자 True로 변환
str(10)           # 정수 10을 문자 10으로 변환
str(3.14)         # 실수 3.14를 문자 3.14로 변환

 

 

(3) 불리언(Boolean) 자료

 

불린(Boolean) 자료는 참(True)과 거짓(False)으로 표현되는 논리값이다. 만약 1 > 2로 입력하면 ‘False’ 값을 갖고, 1 < 2라면 ‘True’를 할당한다.

 

1 > 2                # False 값 출력                                 
1 == 2               # 1과 2가 같다는 것이 거짓임으로 Flase 값 출력
1 != 2               # 1과 2는 다르다는 것이 참이므로 True 값 출력
not 1 != 2           # 1과 2는 다르다는 것이 참이고 not 이기 때문에 False 값 출력
not True             # not True 이기 때문에 False 값 출력
not 1 > 2            # 1>2가 False이고 not 이기 때문에 True 값 출력
b = True             # Boolean 값 True를 변수 b에 저장

 

불리언(Boolean) 연산

 

불린(Boolean) 자료의 연산은 최종 논리값을 계산하는 과정으로 and(&)와 or(|)를 사용한다. and의 경우 둘 모두가 True일 때 True 값을 반환하고, or의 경우 둘 중 하나만 True여도 True 값을 반환한다.

 

# and & 
(3>0) and (3<5)    # True & True로 둘 다 True여서 True 출력
(3<0) & (3<5)      # False & TRue로 하나만 True여서 False 출력

# or |
(3>0) or (3<5)    # True & True로 둘 다 True여서 True 출력
(3<0) | (3<5)      # False & TRue로 하나가 True여서 True 출력
반응형