파이썬의 기본 자료 타입인 숫자, 문자열, 불에 대해 알아보겠습니다.
1. 숫자
숫자형(Numeric Types)에는 int
(정수), float
(실수), complex
(복소수)가 있습니다.
연산자
다음 표와 같이 사칙연산은 일반적인 부호를 쓰고, 나머지는 %를 쓰고 몫은 //를 사용합니다.
+ | 덧셈 |
- | 뺄셈 |
* | 곱셈 |
/ | 나눗셈 |
** | 제곱 |
% | 나머지 |
// | 몫 |
2. 문자열(str)
문자열은 큰 따옴표(""
) 또는 작은따옴표(''
)를 사용합니다.
예제 1: 문자열 선언
print("Hello, World!") # 큰 따옴표 사용
print('Hello, World!') # 작은 따옴표 사용
예제 2: 문자열 내에 따옴표 포함
문자열 내에 작은따옴표 있는 경우는 큰 따옴표를, 문자열 내에 큰 따옴표가 있는 경우에는 작은따옴표를 문자열의 처음과 마지막에 입력합니다. 백슬래시(\)를 사용해서 문자열 안에 따옴표 문자를 표시할 수 있습니다.
print("He's good!") # 큰 따옴표 사용
print('He\'s good!') # 백슬래시 사용
새로운 줄로 바꾸기
파이썬에서 기본 출력 함수 print()
는 줄바꿈을 합니다. 문자열 안에서 줄바꿈을 하려면 다음과 같은 두 가지 방법을 사용할 수 있습니다.
# 이스케이프 코드 \n 사용
print("He's\ngood")
# 작은따옴표 또는 큰따옴표 3개 사용
print('''
He's
good
''')
먼저, 이스케이프 코드 \n 사용해서 줄바꿈을 하는 방법이 있습니다. 그리고 두번째 방법은 작은따옴표 또는 큰따옴표 3개를 문자열 처음과 마지막에 사용하는 방법입니다. 안의 문자열을 입력한 대로 보여주기 때문에 줄바꿈을 하여 입력하면 동일하게 줄바꿈한 상태로 보여줍니다. 위 두 방법의 출력결과는 동일하게 다음과 같이 두 줄로 출력됩니다.
good
연산
문자열을 연결하려면 +
를 사용하고, 문자열 반복은 *
를 사용합니다.
print('a' + 'bc') # abc
print('a' * 5) # aaaaa
인덱싱(indexing)
문자열의 인덱스를 사용하여 특정 문자를 가져올 수 있습니다. 인덱스 번호는 0부터 시작합니다. 문자열을 역순으로도 셀 수 있는데, 이 경우 끝에서부터 -1부터 셉니다. 아래의 예를 보면 마지막 문자인 '!'는 인덱스 번호 16인 동시에 -1이기도 합니다. 인덱스가 0부터 시작하기 때문에 마지막 문자는 17이 아니고 16이 됩니다. 'precious!'에서 문자'u'는 인덱스 14 또는 -3이 됩니다.
str = "You are precious!"
print(str[0]) # Y
print(str[16]) # !
print(str[-1]) # !
print(str[-3]) # u
print(str[14]) # u
슬라이싱(slicing)
슬라이싱을 사용하여 문자열에서 원하는 일부를 가져올 수 있습니다. 형식은 다음과 같습니다.
문자열[시작인덱스:끝인덱스+1]
아래의 예시를 보면, 인덱스 8부터 15까지의 문자열 'precious'를 가져오기 위해 str[8:16]라고 입력했습니다. str[8:]와 같이콜론 뒤에 숫자를 쓰지 않으면 문자열 끝까지를 의미하고, str[:3]처럼 콜론 앞에 숫자가 없으면 처음부터를 의미합니다. str[:]와 같이 콜론만 쓴다면 전체 문자열을 의미합니다.
str = "You are precious!"
print(str[8:16]) # precious
print(str[8:]) # precious!
print(str[:3]) # You
print(str[:]) # You are precious!
포매팅 (formatting)
포매팅을 사용하여 문자열에 값을 넣을 수 있습니다.
문자열 포맷 코드
%s | string 문자열 |
%c | character 문자 한 개 |
%d | integer 정수 |
%f | floating-point 부동소수 |
%o | Octal 8진수 |
%x | hexadecimal 16진수 |
%% | 문자 '%' |
print("%20.5f" % 123.12345678910) # 전체 길이 20, 소수점 5번째 자리까지 표시
print("%20s" % "Hi!") # 전체 길이 20 중 문자열이 3, 공백이 17
print("오늘 날씨는 %s이고, 온도는 영상 %d도입니다." % ("맑음", 15))
포맷 코드를 사용하여 숫자나 문자/문자열을 삽입할 수 있습니다. 하나 이상의 값을 대입하려면 괄호 안에 콤마로 구분하여 입력합니다.
temperature = 15
weather = "맑음"
print("오늘 날씨는 %s이고, 온도는 영상 %d도입니다." % (weather,temperature))
##오늘 날씨는 맑음이고, 온도는 영상 15도입니다.
포맷함수
다음 예와 같이 문자열 안에 {0}, {1}과 같은 인덱스를 사용하여, format()에 입력값으로 변수 또는 직접 변수에 값을 써 줄 수도 있다.
포맷 함수
temperature = 15
weather = "맑음"
print("오늘 날씨는 {0}이고, 온도는 영상 {1}도입니다." .format(weather, temperature))
print(f"오늘 날씨는 {weather}이고, 온도는 영상 {temperature}도입니다.")
정렬
'<', '>', '^'를 사용하여 왼쪽, 오른쪽, 가운데 정렬이 가능합니다. 아래 코드의 첫 라인을 보면 문자열 " Great!"을 전체길이 20중에서 왼쪽으로 정렬(<)하고 빈칸은 공백입니다.
print("{0:<20}".format("Great!")) # 왼쪽 정렬
print("{0:>20}".format("Great!")) # 오른쪽 정렬
print("{0:^20}".format("Great!")) # 가운데 정렬
print("{0:*^20}".format("Great!")) # 공백 대신 *로 채움
위의 마지막 코드를 보면 ^20은 전체길이 20에서 가운데 정렬을 의미하는데 * 는 빈칸을 *로 채우라는 의미입니다. 다시 말해서, '!', '*'와 같은 문자를 앞에 써주면 그 문자로 공백을 채웁니다.
아래의 코드와 같이 중괄호 문자를 사용하려면 중괄호를 두 번 사용합니다.
print("{{}}연습".format()) # {}연습
f문자열 포매팅
문자열 맨 앞에 f
를 쓰고 따옴표 안에 문자열을 입력합니다. 변수의 경우 중괄호 {}
안에 씁니다. 파이썬 3.6 버전부터 가능한 기능입니다.
name = "하늘"
print(f"그의 이름은 {name}입니다.") # 그의 이름은 하늘입니다.
year = 2000
print(f"올해는 {year+24}년입니다.") # 올해는 2024년입니다.
dic = {'apple': 1500, 'orange': 1500}
print(f'사과 한 개의 가격은 {dic["apple"]}입니다.') # 사과 한 개의 가격은 1500입니다.
위의 두번째 출력문과 같이 표현식, 즉 중괄호 안에 계산식을 변수와 사용할 수 있습니다.
위에서 언급했던 정렬 부호 '<', '>', '^'를 사용하여 f문자열 포맷팅을 정렬할 수 있습니다.
print(f'{"Hello!":<20}') #Hello!
print(f'{"Hello!":->20}') #--------------Hello!
print(f'{"Hello!":!^20}') #!!!!!!!Hello!!!!!!!!
num = 3.23456634
print(f'{num:10.4f}') # 3.2346 ->전체길이 10, 소수점4자리까지
문자열 내장 함수
len(문자열) | 문자열 길이를 반환한다. |
문자열.count(특정문자(열)) | 문자열에서 특정자의 개수를 알려준다. |
문자열.index(특정문자(열)) | 문자열에서 특정문자가 첫 번째 나온 위치, 인덱스를 반환한다. |
문자열.find(특정문자(열)) | 문자열에서 특정문자/문자열의 인덱스를 리턴한다. |
문자열.upper() | 문자/문자열을 대문자로 바꾼다. |
문자열.lower() | 문자/문자열을 소문자로 변환한다. |
문자열.replace(특정문자(열), 새로운문자(열)) | 문자/문자열에서 특정 문자/문자열을 새로운 문자/문자열로 바꾼다. |
strip(), rstrip(), lstrip() | 앞뒤/오른쪽/왼쪽 공백제거 |
문자열.split() | 문자열을 공백 기준으로 나눈다. |
특정문자/문자열.join(문자열) | 문자열의 문자 사이에 특정문자 또는 특정 문자열 삽입 |
find() 함수는 찾고 싶은 문자/문자열의 인덱스를 반환합니다. index()도 특정문자의 인덱스를 반환하지만 find() 함수와의 차이는 찾는 문자가 없을 때 index()는 에러를 발생시키지만, find()는 -1을 반환한다는 것입니다.
str = "You are precious!"
print(len(str)) # 문자열 길이
print(str.count('e')) # 특정 문자 개수
print(str.index('u')) # 특정 문자의 인덱스
print(str.find('are')) # 특정 문자열의 인덱스
print(str.replace('precious', 'beautiful')) # 문자열 대체
print(str.upper()) # 대문자로 변환
print(str.lower()) # 소문자로 변환
print(str.split()) # 공백 기준 문자열 분리
print(",".join("new")) # 문자열 사이에 문자 삽입
쉼표와 같은 특정 문자로 문자열을 분리하려면 split()의 소괄호 안에 기준 문자를 삽입합니다.
str = "Happy new year!"
print(str.split()) #['Happy', 'new', 'year!']
str2 = "Happy,new,year!"
print(str2.split(',')) #['Happy', 'new', 'year!']
다음은 join()을 사용해서 "new"라는 문자열에서 문자사이에 ","을 삽입하는 코드의 예입니다.
print(",".join("new")) #n,e,w
3. 불(bool)
불(bool)은 True
, False
를 반환합니다. 다음의 6가지 경우는 False
를 반환합니다.
- ""
- []
- ()
- {}
- 0
- None
예제: 불린 값
다음의 예를 보면 숫자 0의 불린 값은 False이고, 1은 True를 반환한다. 숫자가 0이 아닌 다른 숫자는 True를 반환하기 때문에 -1도 True입니다. 빈 문자열("")과 빈 리스트([])도 False를 반환하는 것을 확인할 수 있습니다.
print(bool(0)) # False
print(bool(1)) # True
print(bool(-1)) # True
print(bool("")) # False
print(bool([])) # False
위에서는 파이썬에 기본 자료 타입을 알아 보았습니다. 이 외에도 콜렉션 타입인 리스트, 튜플, 딕셔너리, 세트가 있는데요. 아래의 글을 확인해 보시기 바랍니다.