a = 5
b = 4.8
연산자 | 의미 |
---|---|
+ | 더하기 |
- | 빼기 |
* | 곱하기 |
/ | 나누기(몫) |
% | 나누기(나머지) |
** | 거듭제곱 |
참/거짓을 나타내는 자료형
x = True
y = False
작은 따옴표 or 큰 따옴표를 사용
a = 'aa'
b = "aa"
문자열 간의 더하기는 문자열을 이어붙여 하나의 문자열로 반환
first_name = '성'
last_name = '이름'
print(first_name + last_name) # 성이름
print(first_name + ' ' + last_name) # 성 이름
a = '2'
b = '9'
print(a + b) # 29
문자열의 길이를 반환, 추후 list 등 다른 곳에서도 사용
print(len('hello')) # 5
문자열을 원하는 부분만 나눠서 사용 가능
test[4:15] # test[4] ~ test[14]
test[5:] # test[5] ~ 끝까지
test[:9] # 처음부터 ~ test[8]
test[:] # 처음부터 끝까지
문자열을 특정 문자열을 기준으로 나누고 싶을 때 사용
email = 'test@naver.com'
domain = email.split('@')[1].split('.')[0]
print(domain) # naver
list와 dictionary는 함께 사용할 수 있다.
순서가 있는, 다른 자료형들의 모임
len, indexing, slicing 사용 가능
test = [1, 2, 3]
test.append(4) # [1, 2, 3, 4]
test.append([1, 2]) # [1, 2, 3, [1, 2]]
test += [1, 2] # [1, 2, 3, [1, 2], 1, 2]
# sort
sample_list = [3, 2, 4, 1, 5]
sample_list.sort() # return data 없이 list 자체를 정렬
print(sample_list) # [1, 2, 3, 4, 5]
# sorted
sample_list = [3, 2, 4, 1, 5]
sorted_list = sorted(sample_list) # 정렬 된 list를 return
print(sorted_list) # [1, 2, 3, 4, 5]
# 잘못된 방법
sample_list = [3, 2, 4, 1, 5]
sorted_list = sample_list.sort() # .sort()의 return data는 None 입니다.
print(sorted_list) # None
sort()는 리턴값이 없이 해당 list자체를 정렬하기 때문에 변수에 넣지 않는다.
sorted()는 정렬된 리스트를 반환하기 때문에 기존의 list는 그대로 두고 정렬된 리스트를 변수에 저장
key, value의 쌍으로 이루어진 자료의 모음
순서가 없어 indexing 사용 불가
person = {'name':'test', 'age':20}
print(person['name']) # test
해당 조건에 만족할 때만 하위 코드를 실행
if 조건식:
print('test1')
elif 조건식2:
print('test2')
else:
print('test3')
num = 3
# 보통 방법
if num%2 == 0:
result = '짝수'
else:
result = '홀수'
# 삼항연산자
result = '짝수' if num%2 == 0 else '홀수'
숫자, list, dictionary 등 반복하고 싶은 자료를 반복
tests = ['라이언', '춘식이', '어피치']
for test in tests:
print(test) # 라이언
# 춘식이
# 어피치
a_list = [1, 3, 2, 5, 1, 2]
# 보통 방법
b_list = []
for a in a_list:
b_list.append(a*2)
# 삼항연산자
b_list = [a*2 for a in a_list]
인덱스와 값을 함께 사용 가능
tests = ['라이언', '춘식이', '어피치']
for i, test in enumerate(tests):
print(i, test) # 0, 라이언
# 1, 춘식이
# 2, 어피치
반복문을 종료, 반복문이 전부 돌기 전에 종료할 경우가 필요할 때 사용
tests = ['라이언', '춘식이', '어피치']
for i, test in enumerate(tests):
print(i, test) # 0, 라이언
if(i==1): # 1, 춘식이
break
반복적으로 사용하는 코드들에 이름을 붙여 놓은 것, 재활용
def hello():
print('안녕!')
hello() # 안녕!
def mealtime(hour):
if hour < 18:
return '아직 아니야! 더 공부해!'
else:
return '밥 맛있게 먹어!!'
print(mealtime(16)) # 아직 아니야! 더 공부해!
print(mealtime(19)) # 밥 맛있게 먹어!!
def cal(a, b):
return a + 2 * b
# 동일
print(cal(3, 5))
print(cal(a=3, b=5))
# 순서를 바꿔도 가능
print(cal(b=5, a=3))
# -----------------------
# default 값, 인수를 넘기지 않으면 default 값이 사용됨
def cal2(a, b=3):
return a + 2 * b
# a=4, b=3 으로 입력
print(cal2(4))
# a=4, b=2 로 입력
print(cal2(4, 2))
# -----------------------
# 입력 인수의 개수를 지정하지 않고 사용하는 방법 (list에서 주로 사용)
# 함수 내부에서 args의 자료형은 tuple
def add(*args):
result = 0
for i in args:
result += i
return result
numbers = [1, 2, 3, 4]
# 결과 동일
print(add(*numbers))
print(add(1, 2, 3, 4))
# -----------------------
# 키워드 인수를 개수를 지정하지 않고 사용하는 방법 (dict에서 주로 사용)
def set_profile(**kwargs):
profile = {}
profile["name"] = kwargs.get("name", "-")
profile["gender"] = kwargs.get("gender", "-")
profile["birthday"] = kwargs.get("birthday", "-")
profile["age"] = kwargs.get("age", "-")
profile["phone"] = kwargs.get("phone", "-")
profile["email"] = kwargs.get("email", "-")
return profile
user_profile = {
"name": "lee",
"gender": "man",
"age": 32,
"birthday": "01/01",
"email": "python@sparta.com",
}
# 결과 동일
print(set_profile(**user_profile))
profile = set_profile(
name="lee",
gender="man",
age=32,
birthday="01/01",
email="python@sparta.com",
)
리스트와 비슷하지만 자료가 변하지 않는 불변인 자료형, 순서는 존재함
test = (1, 2, 3)
test[0] = 30 # error
집합을 구현하는데 사용하는 방법, 중복을 허용하지 않기 때문에 중복 제거를 할 때 사용하기도 한다.
test = [1,2,3,1,2,3,1,2,3,1,2,3,1]
test_set = set(test)
print(test_set) # {1, 2, 3, 4, 5}
집합을 구현하기 때문에 교집합, 합집합, 차집합을 구할 수 있다.
print(a_set & b_set) # 교집합
print(a_set | b_set) # 합집합
print(a_set - b_set) # 차집합
python 3.6 부터 사용 가능한 기능
% 서식문자, string.format과 같은 문자열 포맷팅 방법 중 하나
print(f'{변수명}의 저녁밥은 {변수명}이다.')
에러가 발생한 경우 그에 대한 처리를 하도록 하는 것
try:
출석부의 사람 중 성인인 사람 출력
except:
에러 발생 시 해당 구문 실행
출석부의 사람이 나이가 기재되지 않을 경우 에러가 발생하며 프로그램이 종료되지만 에러 발생 시 except 구문을 사용하여 에러 예외 처리를 할 수 있다.
if / elif와 같이 except를 연달아서 작성할 수 있다.
파일을 분리하고 분리한 파일의 함수, 클래스를 사용하고 싶은 경우 사용
main_test.py
from main_func import *
say_hi()
main_func.py
def say_hi():
print('안녕!')
리스트의 요소를 지정된 함수로 처리해주는 함수 (튜플도 가능)
원본 리스트를 변경하지 않고 새 리스트를 생성
def check_adult(person):
if person['age'] > 20:
return '성인'
else:
return '청소년'
result = map(check_adult, people)
# map 함수를 거치면 기존의 list or tuple로의 처리를 해줘야 한다.
# 안하면 map object가 출력
print(list(result))
함수를 한 줄만으로 만들게 해주는 함수
result = map(lambda x: ('성인' if x['age'] > 20 else '청소년'), people)
print(list(result))
map, 삼항연산자를 사용하여 map의 코드와 동일한 기능의 함수를 한 줄로 구현 가능
map 과 유사
필요한 데이터만을 추출 (조건식의 True)
result = filter(lambda x: x['age'] > 20, people)
print(list(result))
데이터와 함께 기능을 함께 묶는 방법을 제공
새로운 클래스를 만들어 새로운 클래스의 새로운 인스턴스를 만들 수 있게 한다.
클래스에 의해 정의된 메서드도 가질 수 있다.
클래스를 과자 틀, 클래스를 사용해 만들어진 과자를 인스턴스(또는 객체)라 한다.
# 몬스터들의 HP를 관리하는 Class
class Monster():
hp = 100
alive = True
def damage(self, attack):
self.hp = self.hp - attack
if self.hp < 0:
self.alive = False
def status_check(self):
if self.alive:
print('살아있다')
else:
print('죽었다')
# m, m2는 같은 Class 인스턴스를 가진 별개의 것
m = Monster()
m.damage(120)
m2 = Monster()
m2.damage(90)
m.status_check()
m2.status_check()