A Developing Developer
[스파르타코딩클럽] 파이썬 문법 뽀개기 본문
- 변수
변수이름 = 값
- 숫자
사칙연산 가능 + 몫과 나머지 ( +, - , *, / , %) + 제곱
제곱 : x 의 y 승 -> x ** y
문자열 '1' 을 숫자로 바꾸기위해서는 int('1'), 이런식으로 사용한다.
- Boll
Ture, False
<, >. <=, >=, ==, !=
- 문자열
a = 'aa'
숫자 1 을 문자열로 바꾸기위해서는 str(1), 이런식으로 사용한다.
문자열 연산 : 문자열 간의 더하기는 문자열을 이어붙인 문자열을 반환.
- 인덱싱 : 문자열의 일부를 따로 떼어 부르는 방법
#quiz 1 spa 까지만 출력
text = 'sparta'
result = text[0:3]
print(result)
- 슬라이싱 : 문자열의 일부를 잘라내는 방법
phone = '02-123-1234'
result = phone.split('-')[0]
print(result)
- 리스트
- 순서가 있는, 다른 자료형들의 모임
a = [1, 5, 2]
b = [3, "a", 6, 1]
c = []
d = list()
e = [1, 2, 4, [2, 3, 4]]
- len() : 리스트의 길이
a = [1, 5, 2]
print(len(a)) # 3
b = [1, 3, [2, 0], 1]
print(len(b)) # 4
- append() : 덧붙이기
a = [1, 2, 3]
a.append(5)
print(a) # [1, 2, 3, 5]
a.append([1, 2])
print(a) # [1, 2, 3, 5, [1, 2]]
# 더하기 연산과 비교!
a += [2, 7]
print(a) # [1, 2, 3, 5, [1, 2], 2, 7
- sort() : 정렬하기
a = [2, 5, 3]
a.sort()
print(a) # [2, 3, 5]
# 역순
a.sort(reverse=True)
print(a) # [5, 3, 2]
- x in a : 요소가 리스트 안에 있는지 알아보기
a = [2, 1, 4, "2", 6]
print(1 in a) # True
print("1" in a) # False
print(0 not in a) # True
- 딕셔너리 : 키(key)와 벨류(value)의 쌍으로 이루어진 자료의 모임
person = {"name":"Bob", "age": 21}
print(person["name"])
- 딕셔너리의 값을 업데이트하거나 새로운 쌍의 자료를 넣을 수 있음
person = {"name":"Bob", "age": 21}
person["name"] = "Robert"
print(person) # {'name': 'Robert', 'age': 21}
person["height"] = 174.8
print(person) # {'name': 'Robert', 'age': 21, 'height': 174.8}
- 'x' in a : 딕셔너리 안에 해당 키가 존재하는지 알고 싶을 때 사용
person = {"name":"Bob", "age": 21}
print("name" in person) # True
print("email" in person) # False
print("phone" not in person) # True
- 리스트와 딕셔너리의 조합
# quiz 3 smith 의 과학점수 출력
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}}
]
result = people[2]['score']['science']
print(result)
- enumerate : 번호 매기기
people = [
{'name': 'bob', 'age': 20},
{'name': 'carry', 'age': 38},
{'name': 'john', 'age': 7},
{'name': 'smith', 'age': 17},
{'name': 'ben', 'age': 27},
{'name': 'bobby', 'age': 57},
{'name': 'red', 'age': 32},
{'name': 'queen', 'age': 25}
]
for i, person in enumerate(people):
name = person['name']
age = person['age']
print(i, name, age)
if i > 3 :
break
- 조건문 : 조건을 만족했을 때만 특정 코드를 실행하도록 하는 문법
- if 문
money = 5000
if money > 3800:
print("택시 타자!")
- else 와 elif
age = 27
if age < 20:
print("청소년입니다.")
elif age < 65:
print("성인입니다.")
else:
print("무료로 이용하세요!")
- 반복문
# quiz 4 짝수 몇개
num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]
cnt = 0
for num in num_list:
if num % 2 == 0:
cnt += 1
print(cnt)
- 함수 : 반복적으로 사용하는 코드들에 이름을 붙여놓은 것
- 주민등록번호로 성별 구하기
# quiz 7 주민등록번호로 성별 구하기
def check_gender(pin):
gender_pin = pin.split('-')[1][0]
if int(gender_pin) % 2 == 0:
print('여성')
else:
print('남성')
my_pin = '200101-2012345'
check_gender(my_pin)
- 튜플 : 리스트랑 똑같이 생겼는데 불변형이다. 리스트는 [] 튜플은 ()
# list 는 변화가 가능하다.
a_list = [1,2,3,4]
# tulple 은 변화가 불가능하다.
a_tuple = (1,2,3,4)
- 집합 : 리스트에서 중복을 제거해준다.
# quiz 8 차집합, A 가 듣는 수업 중 B 가 듣지 않는 수업 찾기
student_a = ['물리2','국어','수학1','음악','화학1','화학2','체육']
student_b = ['물리1','수학1','미술','화학2','체육']
set_a = set(student_a)
set_b = set(student_b)
# 교집합 A 와 B 가 같이 듣는 수업
set_a & set_b
# 합집합 A 와 B 가 듣는 수업
set_a | set_b
# 차집합 A 는 듣지만 B는 듣지 않는 수업
set_a - set_b
- f-string : 변수로 더 직관적인 문자열 만들기
# f-string
scores = [
{'name':'영수','score':70},
{'name':'영희','score':65},
{'name':'기찬','score':75},
{'name':'희수','score':23},
{'name':'서경','score':99},
{'name':'미주','score':100},
{'name':'병태','score':32}
]
for s in scores:
name = s['name']
score = str(s['score'])
print(f'{name}의 점수는 {score}점 입니다.')
- 예외처리 (뭔가 잘못 될 가능성이 있다 싶은 코드에 적용, 너무 남용하면 안된다.)
try:
구문
except:
에러났을때 나오는 구문
people = [
{'name': 'bob', 'age': 20},
{'name': 'carry', 'age': 38},
{'name': 'john', 'age': 7},
{'name': 'smith', 'age': 17},
{'name': 'ben', 'age': 27},
{'name': 'bobby'},
{'name': 'red', 'age': 32},
{'name': 'queen', 'age': 25}
]
for person in people:
try:
if person['age'] > 20:
print (person['name'])
except:
print(person['name'], '에러입니다.')
- 파일 불러오기
from 불러올 파일명 import *
- 한줄의 마법
- if 문
('짝수' if num % 2 == 0 else '홀수')
# num 의 나머지가 0 이면 짝수 아니면 홀수
- for 문
[a * 2 for a in a_list]
# a_list 값을 2 곱하면서 반복해라
- map : 리스트의 모든 원소를 조작하기
- filter : map과 유사, True 인 것들만 뽑기
- lambda식 : 한줄짜리 함수를 굳이 함수로 만들지않고 깔끔하게 정리하는데 도움을 주는 표현식?
# map : 리스트의 모든 원소를 조작하기, lambda 식 : 한줄짜리 함수를 굳이 함수로 만들지않고 깔끔하게 정리하는데 도움을 주는 표현식?, fitler : map과 유사, True 인 것들만 뽑기
people = [
{'name': 'bob', 'age': 20},
{'name': 'carry', 'age': 38},
{'name': 'john', 'age': 7},
{'name': 'smith', 'age': 17},
{'name': 'ben', 'age': 27},
{'name': 'bobby', 'age': 57},
{'name': 'red', 'age': 32},
{'name': 'queen', 'age': 25}
]
result = filter(lambda x: x['age'] > 20, people)
# people 을 돌면서 check_adult 에 넣어라,
print(list(result)) # 그리고 그 결과값을 다시 list 로 묵은거
- 함수 심화
# 1. 함수에 인수를 넣을 때, 어떤 매개변수에 어떤 값을 넣을지 정해줄 수 있음. 순서 상관 없음
def cal(a, b):
return a + 2 * b
print(cal(3, 5)) # 13
print(cal(5, 3)) # 11
print(cal(a = 3, b = 5)) # 13
print(cal(b = 5, a = 3)) # 13
# 2. 특정 매개변수에 디폴트 값을 지정해줄 수 있음
def cal2(a, b = 3):
return a + 2 * b
print(cal2(4)) # 10
print(cal2(4, 2)) # 8
print(cal2(a = 6)) # 12
print(cal2(a = 1, b = 7)) # 15
# 3. 입력값의 개수를 지정하지 않고 모두 받는 방법! *args
def call_names(*args):
for name in args:
print(f'{name}야 밥먹어라~')
call_names('철수', '영수', '희재')
# 철수야 밥먹어라~
# 영수야 밥먹어라~
# 희재야 밥먹어라~
# 4. 키워드 인수를 여러 개 받는 방법! **kwars
def get_kwargs(**kwargs):
print(kwargs)
get_kwargs(name = 'bob')
get_kwargs(name = 'john', age = '27')
# {'name': 'bob'}
# {'name': 'john', 'age': '27'}
- 클래스
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('죽었따')
m1 = Monster() # m1 을 인스턴스라고 한다.
m1.damage(150)
m1.status_check() # 죽었따
m2 = Monster()
m2.damage(90)
m2.status_check() # 살았따
============================================================================================
출처 : [스파르타코딩클럽] 파이썬 문법 뽀개기
============================================================================================