변수 = 변할 수 있는 것, 어떠한 값을 담는 '상자'
컴퓨터가 기억하고 있는 메모리 공간을 변수가 가리킨다~ 라고 생각해도 좋다. (메모리에 올려두는 개념)
a = 11.5
print(a) # a를 출력하는 함수, 결과값은 11.5
변수에 넣은 값을 확인하고 싶다면 print()
함수를 사용하여 값을 출력한다.
print('hi') # hi
print(True) # True
변수나 값의 자료형을 확인하기 위해서는 type()
함수를 사용한다.
파이썬에는 다양한 자료형이 있지만 가장 많이 쓰이는 자료형은 아래와 같다.
NoneType
논타입, 값이 없다.
None
이라는 값을 가지고 있는 데이터 타입
이는 다음과 같은 상황에서 반환된다.
False
, 0
과는 다른 의미임에 주의
int
, float
, complex
int
정수 타입# int 선언
a = 10
print(a) # 10
# int 생성자
b = int(10.4)
print(b) # 10
int
로 해결할 수 있다.float
실수 타입# float 선언
a = 11.7
print(a) # 11.7
# float 생성자
b = float(21.5)
print(b) # 21.5
int
는 10
, float
는 10.0
으로 표현해야 한다..
앞/뒤의 0
은 생략 가능 -> 10.
으로 표기해도 됨)complex
복소수 타입# complex 선언
a = 2 + 3j # 실수부 + 허수부j
b = complex(3, 5) # complex(실수부, 허수부)
print(a) # 2 + 3j
print(b) # 3 + 5j
bool
참(
True
)과 거짓(False
)을 가질 수 있는 데이터 타입
a = True
b = False
c = ( 3 > 2 )
print(c) # True
d = ( 3 < 2 )
print(d) # False
e = ( 3 == 2 )
print(e) # False
True
, False
는 파이썬의 예약어이기 때문에 반드시 첫 글자는 대문자로 작성''
), 리스트([]
), 튜플(()
), 딕셔너리([]
)가 원소를 가지지 않고 비어있으면 False
, 하나 이상의 원소를 가지면 True
0
이라면 False
, 0
이 아닌 다른 수라면 True
str
first_name = 'Gahee'
last_name = 'Park' # 큰 따옴표든 작은 따옴표든 상관 없음
print(first_name+last_name) # GaheePark
multi_str1 = """
문자열
멀티라인
"""
multi_str2 = '''
문자열
멀티라인
'''
a = 2
b = 'a'
print(b) # 숫자가 아닌 문자열 a 출력
a = "3"
b = "hi"
print(a+b) # 3hi
a = 3
b = "hi"
print(a+b)
# 에러 발생
# Traceback (most recent call last):
# File "/Users/user/Desktop/sparta_python/pythonProject1/hello.py", line 3, in <module>
# print(a+b)
# ~^~
# TypeError: unsupported operand type(s) for +: 'int' and 'str'
a = '2'
b = str(2) # 문자열로 바꾸는 함수
print(a+b) # '22'
len()
함수 사용text = 'abcdefghijk'
result = len(text)
print(result) # 11
(1) 다양한 방법으로 활용 가능
text = 'abcdefghijk'
result = text[:3]
print(result) # abc
text = 'abcdefghijk'
result = text[3:]
print(result) # defghijk
text = 'abcdefghijk'
result = text[3:7] # 3번째부터 7번째까지 문자열을 자르고 싶다
print(result) # defg
text = 'abcdefghijk'
result = text[:] # 복사하기
print(result) # abcdefghijk
text = 'abcdefghijk'
result = text[:-5]
print(result) # abcdef
text = 'abcdefghijk'
result = text[5:-1]
print(result) # fghij
(2)
myemail = '930_10@naver.com'
result = myemail.split('@') # '@'를 기준으로 자른다
print(result) # ['930_10', 'naver.com'] 배열로 출력
result2 = myemail.split('@')[1]
print(result2) # 'naver.com'
# 만약 naver가 필요하다면?
result3 = myemail.split('@')[1].split('.')[0]
print(result3) # 'naver'
phone = '02-123-1234' # 지역번호만 자르고 싶다면?
result = phone.split('-')[0]
print(result) # '02'
text = 'abcdefghijk'
result = text[4]
print(result) # e
list
리스트 자료형은 순서, 중복, 수정, 삭제를 모두 지원하는 자료형
[]
기호를 사용한다.
a_list = ['apple', 'pear', 'strawberry'] # 문자열 뿐만 아니라 불리언형, 숫자형도 가능
print(a_list) # ['apple', 'pear', 'strawberry']
print(a_list[0]) # 'apple' 인덱스로 접근
a_list = [3,5,2,6,8]
result = a_list[-1] # -1 입력 -> 무조건 제일 마지막 요소 출력
print(result) # 8
start_index
는 범위에 포함되지만 end_index
는 포함되지 않음# slicing 문법
list_name[start_index : end_index : step]
# 또는 step 생략(생략시 자동으로 1로 설정)
list_name[start_index : end_index]
# 예시
list = [0, 1, 2, 3, 4, 5]
print(list[2:4])
>>> [2, 3]
a_list = [2, True, 'strawberry', ['blueberry','redberry']]
print(a_list) # [2, True, 'strawberry', ['blueberry','redberry']]
print(a_list[3]) # ['blueberry', 'redberry']
print(a_list[3][1]) # 'redberry'
append()
함수: 리스트의 맨 끝에 요소를 추가하는 함수a_list = [3,5,2,6,8]
a_list.append(99)
print(a_list) # [3, 5, 2, 6, 8, 99]
a_list = [3,5,2,6,8]
result = len(a_list)
print(result) # 5
sort()
함수: 리스트 정렬하는 함수a_list = [3,5,2,6,8]
a_list.sort() # 오름차순
print(a_list) # [2, 3, 5, 6, 8]
a_list.sort(reverse=True) # 내림차순
print(a_list) # [8, 6, 5, 3, 2]
in
을 사용하여 값이 있는지 없는지 파악하기a_list = [3,5,2,6,8]
result = (5 in a_list)
print(result) # True
a_list = ['사과', '감', '배']
a[1] = '딸기'
print(a_list) # ['사과', '딸기', '배']
dict
딕셔너리. 사전 자료형은 순서가 없고 키-밸류 쌍으로 존재한다.
키 중복을 허용하지 않고, 데이터의 수정이나 삭제가 가능하다.
{}
기호를 사용한다.
a_dict = {'name': 'bob', 'age': 27}
print(a_dict['name']) # 'bob'
print(a_dict['age']) # 27
key:value
식으로 아이템을 선언할 수 있지만, key=value
의 형식으로도 사용 가능value
를 찾고 싶을 땐, dict_name[key_name]
처럼 찾을 수 있다.# 빈 dict 선언
dict1 = {}
dict2 = dict()
# 원소가 있는 dict 선언
dict3 = {'name': 'Kim', 'phone': '01012345678', 'birth': '840102'}
dict4 = dict(name='Kim', phone='01012345678', birth='840102')
# 가독성을 위해 줄 띄어쓰기
dict5 = {
'name': 'Kim',
'phone': '01012345678',
'birth': '840102'
}
print(dict5['name'])
>>> Kim
a_dict = {'name': 'bob', 'age': 27, 'friends': ['John', 'Mike', 'Ann']}
result = a_dict['friends']
print(result) # ['John', 'Mike', 'Ann']
result = a_dict['friends'][0]
print(result) # 'John'
a_dict = {'name': 'bob', 'age': 27, 'friends': ['John', 'Mike', 'Ann']}
a_dict['height'] = 180
print(a_dict) # {'name': 'bob', 'age': 27, 'friends': ['John', 'Mike', 'Ann'], 'height': 180}
a_dict = {'name': 'bob', 'age': 27, 'friends': ['John', 'Mike', 'Ann']}
a_dict['height'] = 180
result = ('height' in a_dict)
print(result) # True
get()
, update()
를 사용해 값을 가져오거나 새로 추가하기dict.get('key')
dict.update({'key': value})
list
와 dict
의 조합people = [
{'name': 'bob', 'age': 27},
{'name': 'John', 'age': 30}
]
print(people) # [{'name': 'bob', 'age': 27}, {'name': 'John', 'age': 30}]
# 만약 30이라는 값을 얻고 싶다면?
print(people[1]['age']) # 30
people = [
{'name': 'bob', 'age': 20, 'score':{'math':90,'science':70}},
{'name': 'carry', 'age': 38, 'score':{'math':40,'science':72}},
{'name': 'smith', 'age': 28, 'score':{'math':80,'science':90}},
{'name': 'john', 'age': 34, 'score':{'math':75,'science':100}}
]
# smith의 sience 점수 출력
print(people[2]['score']['science']) # 90
tuple
순서와 중복은 지원하지만 수정과 삭제는 지원하지 않는다 (불변성)
()
기호를 사용
보안적 이슈 등의 이유로 절대 변경되면 안되는 중요한 값을 불변으로 유지하고 싶을 때 사용
,
반드시 추가해야 한다.# 빈 tuple 선언
tuple1 = ()
tuple2 = tuple()
# 원소가 있는 tuple 선언
tuple3 = (1,) # 원소가 하나일 때는 끝이 , 로 끝나야 튜플로 인식한다.
tuple4 = (1, 2, 3, 4)
tuple5 = ('football', 1, 2, 'soccer', False, 3.14159) # 서로 다른 자료형 사용 가능
a = ('사과', '감', '배')
a[1] = '수박'
print(a)
# 출력 결과
Traceback (most recent call last):
File "/Users/user/Desktop/sparta_python/pythonProject1/hello.py", line 3, in <module>
a[1] = '수박'
~^^^
TypeError: 'tuple' object does not support item assignment
tuple = (1, 2, 3)
tuple = list(tuple)
tuple[0] = 100
print(tuple[0])
>>> 100
set
집합 자료형은 순서를 가지지 않고, 중복도 허용하지 않는 자료형이다.
a = [1,2,3,4,5,6,7,8,9,0,2,4,5,1]
a_set = set(a)
print(a_set)
# 출력 결과
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
in
키워드 사용set = {1, 2, 3, 4}
if 1 in set:
print("found 1")
>>> found 1
a = ['사과', '감', '배']
b = ['사과', '귤', '참외']
a_set = set(a)
b_set = set(b)
print(a_set & b_set) # {'사과'}
a = ['사과', '감', '배']
b = ['사과', '귤', '참외']
a_set = set(a)
b_set = set(b)
print(a_set | b_set) # {'귤', '사과', '배', '참외', '감'}
a = ['사과', '감', '배']
b = ['사과', '귤', '참외']
a_set = set(a)
b_set = set(b)
print(a_set - b_set) # {'감', '배'}
student_a = ['물리2','국어','수학1','음악','화학1','화학2','체육']
student_b = ['물리1','수학1','미술','화학2','체육']
print(set(student_a) - set(student_b)) # {'화학1', '물리2', '음악', '국어'}
func
함수도 독자적인 자료형을 가진다.
def sum(a,b):
print('더하기를 하셨네요')
return a+b
result = sum(43,5)
print(result)
# 출력 결과
'더하기를 하셨네요'
48
def bus_rate(age):
if age > 65:
print('무료입니다.')
return 0
elif age > 20:
print('성인입니다.')
return 2400
else:
print('청소년이거나 아이입니다.')
return 1200
myrate = bus_rate(26)
print(myrate)
# 출력 결과
'성인입니다.'
2400
def check_gender(pin):
num = int(pin.split('-')[1][0])
if num % 2 == 0:
print('여자입니다.')
else:
print('남자입니다.')
check_gender('150101-1012345')
check_gender('150101-3012345')
check_gender('150101-2012345')
check_gender('150101-4012345')
# 출력 결과
'남자입니다.'
'남자입니다.'
'여자입니다.'
'여자입니다.'
참고
문자열을 숫자열로 바꿀 때는 int()
함수를 사용한다.
이번 글에서는 파이썬의 변수 선언, 많이 사용되는 자료형에 대해 다뤄보았다.
파이썬 고수가 되기 위해 열심히 가..가보자고