자료형이란? 프로그래밍 언어에서 사용할 수 있는 데이터의 종류를 의미한다.
데이터의 종류에 따라 확보해야되는 메모리의 크기가 다르기 때문에. 그 값의 종류를 식별하여 자료형에 대한 가능한 값, 해당 자료형에서 수행을 마칠 수 있는 명령들, 데이터의 의미, 해당 자료형의 값을 저장하는 방식을 결정한다.
숫자형 자료형은 따옴표 없이 숫자로만 입력된 형태의 데이터.
정수, 실수 다양한 형태의 숫자를 쓸 수 있고, 숫자형간의 사칙연산이 가능하다.
num = 숫자
num = Int("정수 숫자");
num = float("실수 숫자");
a = 7
b = 2
a+b # 9
a-b # 5
a*b # 14
a/b # 3.5
a//b # 3 (몫)
a%b # 1 (나머지)
a**b # 49 (거듭제곱)
a+3*b # 13 (여러 연산을 한 줄에 할 경우 사칙연산의 순서대로!)
(a+3)*b # 20 (소괄호를 이용해서 먼저 계산할 부분을 표시해줄 수 있어요!)
불린형 자료형은 ture(참) 또는 false(거짓)의 논리형태의 데이터.
기본적으로 0, 빈문자(" "), None을 제외한 모든 값에 대해서 true를 반환한다.
변수 = True or False # 소문자로 쓰면 자료형으로 인식하지 않고 변수명이라 생각해 에러가 납니다~
변수 = Bool(표현식);
문자열은 문자나 숫자를 "" 또는 ''로 감싸고 있는 형태의 데이터.
변수 = "문자열 숫자나 문자";
a = 1 # 따옴표로 감싸지 않으면 문자열이 아닌 숫자!
b = "a"
c = a # 따옴표로 감싸지 않으면 변수이름을 뜻하기 때문에 꼭 구분해서 써야합니다!
print(a, b, c) # 1 "a" 1
문자열 간의 더하기는 두 문자열을 이어붙인 문자열을 반환한다. 이때 문자열과 다른 자료형은 더할 수 없다.
first_name = "Harry"
last_name = "Potter"
first_name + last_name # HarryPotter
first_name + " " + last_name # Harry Potter
a = "3"
b = 5
a+b # Error!
내장 함수는 모듈이나 패키지를 가져오지 않고 바로 사용할 수 있는 함수를 의미
메소드는 객체 내의 함수를 의미하는데 여기서는 특정 자료형에서 사용할수 있는 함수로 이해하면 된다. 자료형 뒤에 '.' 을 붙이고 쓰면 된다.
print(len("Hello, Sparta!")) # 14
print(len("안녕하세요.")) # 6
sentence = 'Python is FUN!'
sentence.upper() # PYTHON IS FUN!
sentence.lower() # python is fun!
# 이메일 주소에서 도메인 'gmail'만 추출하기
myemail = 'test@gmail.com'
result = myemail.split('@') # ['test','gmail.com'] (뒤에 배울 '리스트'라는 자료형이에요 :))
result[0] # test (리스트의 첫번째 요소)
result[1] # gmail.com (리스트의 두 번째 요소
result2 = result[1].split('.') # ['gmail','com']
result2[0] # gmail -> 우리가 알고 싶었던 것
result2[1] # com
# 한 줄로 한 번에!
myemail.split('@')[1].split('.')[0]
txt = '서울시-마포구-망원동'
print(txt.replace('-', '>')) # '서울시>마포구>망원동'
파이썬에서는 복잡한 문자열을 만들때 원하는 위치에 특정한 값(변수)를 삽입해서 문자열을 그때그때 이쁘게 출력할 수 있도록 지원해준다.
문자열의 어느 위치에 값이 들어가는지를 표시하기 위해 문자열 안에 % 기호로 시작하는 형식지정 문자열(format specification string)을 붙이고 그 뒤에 다른 값을 붙이면 뒤에 붙은 값이 문자열 안으로 들어간다.
문자 | 설명 |
---|---|
%s | 문자열 |
%d | 정수 |
%f | 부동소수점 실수 |
print("내 이름은 %s입니다." % "홍길동") # 내 이름은 홍길동입니다.
print("나는 %d살 입니다." % 12") # 나는 12살 입니다.
print("원주율의 값은 %f입니다." % 3.141592) # 원주율의 값은 3.141592입니다.
.format() 메서드는 % 기호로 시작하는 형식지정 문자열 대신 {}
기호를 사용한다. 또한 자료형을 표시할 필요가 없다. 문자열 내에서 {
문자를 출력하고 싶을 때는 {{
라는 글자를 사용한다.
{}
안에 값의 순서를 지정하는 숫자나 인자를 넣을 수도 있다. 가장 앞에 있는 값은 {0}
, 그 뒤의 값은 {1}
, 이런 식으로 지정한다. 이 방법을 사용하면 값의 순서를 바꾸거나 같은 값을 여러번 인쇄할 수도 있다.
print("내 이름은 {}입니다.".format("홍길동")) # 내 이름은 홍길동입니다.
print("내 이름은 {{{}}}입니다.".format("홍길동")) # 내 이름은 {홍길동}입니다.
"{2}의 {0} 점수는 {1}점입니다. {1}점! {1}점!".format("수학", 100, "철수") # 숫자지정
"{a}점수: {x}점, {b}점수: {y}점".format(a="영어", b="수학", x=100, y=90) # 인자지정
f-string은 문자열의 앞에 f 글자를 붙인 문자열이다. f 문자열에서는 {}
안에 변수의 이름을 바로 사용할 수 있다.
s = {'name':'영수','score':70}
name = s['name']
score = str(s['score'])
print(f'{name}은 {score}점입니다')
리스트는 관련 있는 데이터를 하나의 변수에 할당하여 관리하기 위한 데이터 타입으로 [ ]
로 감싸서 나타내고, 이런 요소들을 쉼표로 구분하며, 안에 어떤 데이터 타입이든 다 들어갈 수 있다.
리스트안에 리스트가 들어갈 수도 있고, 딕셔너리가 들어갈 수도 있다.
변수명 = [value1,value2,value3]
a = [1, 3, 2, 4]
b = [3, "a", 6, 1]
c = []
d = list()
e = [1, 2, 4, [2, 3, 4]]
# 인덱싱
print(a[3]) # 4
# 슬라이싱
print(a[1:]) # [3, 2, 4]
print(a[:3]) # [1, 3, 2]
print(a[1:3]) # [3, 2]
print(a[-1]) # 4 (맨 마지막 것)
print(a[::-1]) # 역순 [4,2,3,1]
print(a[::-2]) # 역순 [4,3]
a = [1, 5, 2]
print(len(a)) # 3
a = [1, 2, 3]
a.append(5) # [1, 2, 3, 5]
a = [2, 5, 3]
a.sort() # 오름차순 [2, 3, 5]
a.sort(reverse=True) #내림차순 [5, 3, 2]
a = [2, 1, 4, "2", 6]
print(1 in a) # True
print("1" in a) # False
print(0 not in a) # True
딕셔너리는 키(key)와 밸류(value)의 쌍으로 이루어진 데이터타입으로 {}
로 감싸서 나타내고, 이런 요소들을 쉼표로 구분하며, 안에 어떤 데이터 타입이든 다 들어갈 수 있다.
딕셔너리안에 리스트가 들어갈 수도 있고, 딕셔너리가 들어갈 수도 있다.
다만 딕셔너리의 요소에는 순서가 없기 때문에 인덱싱은 할 수 없다.
{ Key1:Value1,
Key2:Value2,
Key3:Value3, ...}
# 빈 딕셔너리 만들기
a = {}
a = dict()
person = {"name":"Bob", "age": 21}
person["name"] = "Robert"
print(person) # {'name': 'Robert', 'age': 21}
print(person[1]) # 0이라는 key가 없으므로 KeyError 발생! 인덱싱 불가.
person = {"name":"Alice", "age": 16, "scores": {"math": 81, "science": 92, "Korean": 84}}
print(person["scores"]) # {'math': 81, 'science': 92, 'Korean': 84}
print(person["scores"]["science"]) # 92
person = {"name":"Bob", "age": 21}
print("name" in person) # True
print("email" in person) # False
print("phone" not in person) # True
튜플(tuple)은 리스트와 비슷하지만 불변인 자료형이다. ()로 감싸서 나타내고 순서가 있지만 생성,삭제,수정이 불가능하다.
변수명 = (value1,value2,value3)
a = (1,2,3)
print(a[0])
a[0] = 99 # Error!
#주로 딕셔너리 대신 리스트와 튜플로 딕셔너리 '비슷하게' 만들어 사용해야 할 때 많이 쓰임.
a_dict = [('bob','24'),('john','29'),('smith','30')]
집합(set)은 집합에 관련된 것을 쉽게 처리하기 위해 만든 자료형dlek.
변수명 = set()
a = [1,2,3,4,5,3,4,2,1,2,4,2,3,1,4,1,5,1]
a_set = set(a)
print(a_set) # {1, 2, 3, 4, 5} 중복 제거
a = set(['사과','감','수박','참외','딸기'])
b = set(['사과','멜론','청포도','토마토','참외'])
print(a & b) # 교집합
print(a | b) # 합집합
print(a - b) # 차집합