[숫자형]
숫자형에는 int(정수형), float(실수형), complex(복소수)가 있다.
- integer(정수형)
말 그대로 양의 정수, 음의 정수, 0을 포함하는 자료형이다.
a = 123
b = -123
c = 0
파이썬 2.x 버전에서는 엄청 큰 숫자를 담기 위한 long 타입이 존재했지만, 3.x부터는 long 타입이 사라지고, int 타입이 크기 제한이 없는 부호있는 정수형이 되었다. 파이썬 정수형의 크기는 컴파일러에 의해서가 아닌 컴퓨터 메모리에 의해서만 제한된다.
8진수(ex, 0o65)나 16진수(ex, 0x1FF)로도 표현이 가능하다.
a = 0o65
b = 0x1FF
- float(실수형)
실수형은 소수점이 포함된 숫자를 의미한다. 다른 언어처럼 float와 double 타입이 따로 있는 것과는 달리 파이썬에서는 float 타입만 사용한다. e나 E를 사용하여 지수표기법으로 표현도 가능하다.
a = 123.4
b = -23.1
c = 12e2 #c = 1200.0
d = 0.012e-1 #d = 0.0012
e = 1.53E+4 #e = 15300.0
- complex(복소수)
복소수는 3 + 4j와 같이 실수부(real part)와 허수부(imaginary part)의 합의 꼴로 나타나는 수이다.
a = 3 + 4j
b = 2 - 1J
c = complex(5, 4)
complex 메소드를 통해 실수부나 허수부만 따로 표시하거나 켤레복소수도 바로 확인할 수 있다.
[문자열]
문자열(string)은 문자들의 집합을 의미한다. C/C++이나 JAVA에서는 문자(char 타입)와 문자열(string 타입)을 분리하여 사용하지만, 파이썬에서는 문자나 문자열을 문자열로 통일하여 사용한다.
문자열은 기본적으로 작은 따옴표(')나 큰 따움표(")로 감싸는 형태로 표현 가능하다. 어느 것을 사용해도 동일하고 어떠한 차이도 없다.
s1 = 'Hello, World!'
s2 = "Hello, World!"
s3 = "Hello, World! \
Nice to meet you!"
s4 = '''Hello, Mr. Jun.
Nice to meet you.
Good bye!'''
s5 = """Hello, Mr. Jun.
Nice to meet you.
Good bye!"""
# s4 and s5 is same with s6
s6 = "Hello, Mr. jun.\nNice to meet you.\nGood bye!"
긴 문자열을 여러줄에 걸쳐서 나타내려면 줄을 바꾸기 전에 \ 를 사용하여 여러줄에 입력할 수 있다.
또한 여러 문장을 나타내기 위해서 ''' 이나 """ 을 사용할 수도 있다. s4와 s5는 s6과 같다.
또한, 문자열에 + 나 * 연산자를 사용할 수도 있다.
+ 연산자를 쓰면 앞 문자열 뒤쪽에 이어서 문자열이 붙고, * 연산자를 사용하면 * 연산자 뒤 숫자만큼 반복한다.
추가로, 문자열 내부에 작은따옴표(')나 큰따옴표(")를 포함하고 싶으면, 아래와 같은 방법을 사용하면 된다.
이때, \n은 이스케이프 코드다.
s1 = '"Python is very easy." he says' #' ' 사이에 "를 사용하기
s2 = "\"String is python's type\" he says" #\"를 사용하기
s3 = "String is python's type" #" " 사이에 '를 사용하기
s4 = '"String is python\'s type" he says' #\'를 사용하기
- 문자열 인덱싱과 슬라이싱
인덱싱은 해당 번호의 순서의 데이터를 가져온다. 다른 언어와 비슷하게 파이썬도 0부터 시작한다.
s = "Hello, World!"
s[0] #'H'
s[6] #' '
s[-2] #'l'
파이썬은 음수로 인덱싱이 가능한데, 뒤에서부터 몇 번째인지를 의미한다.
슬라이싱은 해당 범위 내의 데이터를 가져오는 것이다.
주의해야 할 점은 s[2:5]가 5번째 인덱스까지가 아닌 4번째 인덱스까지 가져온다는 것이다.
s = 'Hello, World!'
s[2:5] #'llo' - index 2 ~ 4까지 출력
s[:5] #'Hello' - index 0 ~ 4까지 출력
s[8:] #'orld!' - index 8 ~ 끝까지 출력
s[-1] #'!' - 뒤에서 1번째 값 출력(-1번째)
s[-4] #'r' - 뒤에서 4번째 값 출력(-4번째)
s[-5:-1] #'orld' - -5번째에서 -2번째 값 출력
파이썬에서 문자열은 변경이 불가능(immutable)한다. 따라서, C/C++이나 JAVA에서 가능했던 문자열 인덱스로 읽어서 변경하는 것이 파이썬에서는 불가능하고 아래 입력은 에러가 발생한다.
s = 'Hello, World!'
s[2] = 't' # Error 발생(TypeError : 'st' object does not support item assignment
- 문자열 formatting(포맷팅)
문자열 포맷팅이란 문자열 안에 특정 값을 삽입하는 것이다. 특정 값은 대체로 변수를 의미한다.
1. %-formatting
C언어와 비슷한 방법이다. 문자열에 숫자나, 문자열을 대입할 수 있으며, %d(정수형) %f(실수형) %s(문자열) 등을 사용해서 표현한다. 보통 %s를 사용하면 숫자든 문자든 신경 안쓰고 사용할 수 있다.
name = "Junstar"
"Hello, %s." % name #'Hello, Junstar.'
print("Hello, %s." % name) #same result with line 2
age = 85
"Hello, %s. You are %d." % (name, age) #'Hello, Junstar. You are 85.'
2. str.format()
이 방법은 %-formatting에서 조금 더 향상된 방법이다. 이 방법은 메소드 함수를 호출하는 방식으로 사용된다.
문자열 안에 중괄호({})를 사용하고, .format 괄호 안에 대입할 변수나 값을 입력한다.
"Hello, {}. You are {}.".format(name, age) #'Hello, Junstar. You are 85'
'{} x {} = {}'.format(2, 3, 2*3) #'2 x 3 = 6'
index를 사용해서 parameter가 들어갈 순서를 지정할 수도 있다.
"Hello, {1}. You are {0}".format(age, name) #'Hello, Junstar. You are 85'
아래와 같이 딕셔너리로도 가능하다.
person = { 'name' : 'Junstar', 'age' : 85 }
"Hello, {name}. You are {age}.".format(name = person['name'], age = person['age']) #'Hello, Junstar. You are 85.'
"Hello, {a}. You are {b}.".format(a = person['name'], b = person['age']) #same result with line 2
"Hello, {name}. You are {age}.".format(**person) #same result with line 2
%-formatting 보다는 쉽게 읽히지만, 여전히 문자열이 길이가 길어지고 변수가 많아지면 읽기 힘들어진다.
또한, 중괄호 표시에 다음과 같이 좀 더 상세히 세부사항을 지정할 수도 있다.
# 소수점 이하 셋째 자리까지 표현
print('1 / 3 = {:.3f}'.format(1/3)) # 1 / 3 = 0.333
# 밑줄(_)로 11칸을 채우고 가운데 정렬(^)
print('{0:_^11}'.format('hello') # ___hello___
# 입력 변수 순서를 바꿔서 출력
print('{0}, {3}, {2}, {1}'.format(1,2,3,4)) # 1, 4, 3, 2
3. f-Strings (Python 3.6 이상부터 사용 가능)
2번의 방법과 유사하게 사용되지만, 매우 간편하게 중괄호 안에 변수명을 사용하면 된다.
name = 'Junstar'
age = 85
f"Hello, {name}. You are {age}." #'Hello, Junstar. You are 85.'
문자열 앞에 f를 붙여서 사용하면 된다. 물론 대문자 F로도 사용할 수 있다.
중괄호 안에는 문자뿐만 아니라, 숫자, 함수(메소드) 등 다양한 타입을 넣을 수 있다.
print 함수는 항상 끝에 줄바꿈 문자 \n을 추가한다. 따라서, print함수를 호출할 때마다 인자로 주어진 내용 다음에는 다음 줄로 넘어가게 되고, 이것을 막기 위해서는 아래와 같이 사용하면 된다.
print("This is", end=" "); print("print function") # 'This is print function' 출력
- Bytes
byte로 이루어진 문자열을 위해 bytes라는 타입이 있다. 파이썬에서는 b'abcd'와 같은 방식으로 표현한다. 실제 변수에는 인코딩된 상태로 할당하게 되며, 아스키코드 이외의 문자를 입력하면 에러가 발생한다.
index 0을 확인해보면 'a'문자열의 바이트 값(아스키코드 값)이 읽히게 된다.
- 문자열 관련 내장함수
a.len() #a문자열 길이 반환
a.count('b') #a문자열에서 'b'문자 개수 count
a.find('b') #a문자열에서 'b'의 index 반환(처음으로 나온 위치), 해당 문자가 존재하지 않는다면 -1 반환
a.index('b') #find와 유사하다. 다만 존재하지 않는 문자를 찾는다면 Error가 발생한다.
",".join('abcd') #abcd문자열 사이에 ','를 삽입한다. => 'a,b,c,d' 반환
a.upper() #a문자열을 전부 대문자로 변경한다.
a.lower() #a문자열을 전부 소문자로 변경한다.
a.lstrip() #a문자열의 왼쪽 공백을 모두 제거한다.
a.rstrip() #a문자열의 오른쪽 공백을 모두 제거한다.
a.strip() #a문자열의 양쪽 공백을 모두 제거한다.
a.replace(to, from) #a문자열의 from에 해당하는 문자열을 to문자열로 치환한다.
a.split() #a문자열을 공백(스페이스, 탭, 엔터 등)을 기준으로 나누어 준다.
a.split(':') #a문자열을 ':'을 구분자로 사용해서 나누어 준다.
[Bool]
부울/불(Bool) 자료형이란 True와 False를 나타내는 자료형이다. 다음의 값만 가질 수 있으며, 첫 글자는 항상 대문자로 사용해야한다.
a = True
b = False
bool 자료형은 조건문의 반환 값으로도 사용될 수 있다.
조금 특이하지만, 파이썬에서 자료형들에게는 참(True)과 거짓(False)가 존재한다.
숫자에서는 값이 0이면 False, 0이 아닌 값이면 True로 판단된다(C/C++, Java와 동일).
아래 문자열 예시를 한 번 살펴보자.
strTrue에는 값을 넣었고 strFalse에는 어떠한 값도 넣지 않았다. 결과는 값이 존재하는 문자열은 True, 값이 존재하지 않는 문자열은 False로 판단된다. 이는 후에 배울 리스트, 튜플(tuple), 딕셔너리(Dictionary)에도 동일하게 적용된다. 해당 자료형이 비어있으면 False, 비어있지 않으면 True이다.
[None]
None은 아무 데이터도 가지고 있지 않다는 것을 표현한다. null과는 조금 다르며, 파이썬에서 None이라는 값도 하나의 객체에 해당한다(NoneType). 여기서 type 메서드는 파이썬의 내장함수이며 해당 값 또는 변수의 type을 반환한다.
None은 False로 판단된다.
[파이썬/Python] 파이썬 기본 자료형 1(숫자형, 문자열, bool형, None) (tistory.com)
'프로그래밍 언어 > Python' 카테고리의 다른 글
[Python] Tuple (튜플) 사용 방법 (0) | 2023.12.20 |
---|---|
[Python] Tuple (튜플)과 List(리스트)의 공통점/차이점 (0) | 2023.12.20 |
[Python] 데이터 여러개 입력 받기 (Input) (0) | 2023.12.13 |
[Python] 1759 - 암호만들기 (0) | 2023.12.13 |
[Python] 입력값 받기 / input() 함수 (0) | 2023.12.13 |