변수 선언과 자료형
변수 = 어떤 값을 담는 거 (값을 가리키는 박스)
컴퓨터 입장에서는 값이 담긴 위치를 가리키는 것 -> 메모리에 올려둔다
변수 선언
a = 3 # 3을 a에 넣는다.
print(a)
b = a # a에 들어 있는 값인 3을 b에 넣는다.
print(b)
a = 5 # a에 5라는 새로운 값을 넣는다.
print(a, b) # 5 3
a//b # 3 (몫)
a%b # 1 (나머지)
a**b # 49 (거듭제곱)
x = True # 참
y = False # 거짓
# 소문자로 쓰면 자료형으로 인식하지 않고 변수명이라 생각해 에러가 납니다~
z = true # name 'true' is not defined
True = 1 # True/False는 변수명으로 쓸 수 없어요!
4 > 2 # True 크다
5 < 1 # False 작다
6 >= 5 # True 크거나 같다
4 <= 4 # True 작거나 같다
3 == 5 # False 같다
4 != 7 # True 같지 않다
a = 4 > 2 # True
not a # False NOT 연산자로 참을 거짓으로, 거짓을 참으로 바꿔준다.
a and b # False AND 연산자로 모두 참이어야 참을 반환한다.
a or b # True OR 연산자로 둘 중 하나만 참이면 참이다.
문자열 다루기
first_name = "Harry"
last_name = "Potter"
first_name + last_name # HarryPotter
first_name + " " + last_name # Harry Potter
a = "3"
b = "5"
a + b # 35
문자열과 정수를 더하면 에러!
a = 2
b = str(2) //str은 문자열 '2'와 같음
print(a+b) // 오류남 결
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]
- 문자 대체하기 "text.replace"
txt = '서울시-마포구-망원동'
print(txt.replace('-', '>')) # '서울시>마포구>망원동'
- 슬라이싱
f[4:15] # efghijklmno f[4]부터 f[15] 전까지, 총 15-4=11개!
f[8:] # ijklmnopqrstuvwxyz f[8]부터 끝까지, 앞의 8개 빼고!
f[:7] # abcdefg 시작부터 f[7] 전까지, 앞의 7개!
f[:] # abcdefghijklmnopqrstuvwxyz 처음부터 끝까지
- 특정 문자열로 자르고 싶을 때! split('문자열')을 활용
myemail = 'abc@sparta.co'
domain = myemail.split('@')[1].split('.')[0]
print(domain) #결과 sparta
print(domain[:3]) #결과 spa
phone = "02-123-1234"
print(phone.split('-')[0]) #결과 02
- 정렬하기
a = [2, 5, 3]
a.sort()
print(a) # [2, 3, 5]
a.sort(reverse=True)
print(a) # [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
ex) python a_dict['height'] = 180
people = [{'name': 'bob', 'age': 20}, {'name': 'carry', 'age': 38}]
# people[0]['name']의 값은? 'bob'
# people[1]['name']의 값은? 'carry'
person = {'name': 'john', 'age': 7}
people.append(person)
# people의 값은? [{'name':'bob','age':20}, {'name':'carry','age':38}, {'name':'john','age':7}]
# people[2]['name']의 값은? 'john'
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}}
]
print(people[2]['score']['science'])
조건문
if 조건1
print("")
elif 조건2
print("")
else:
print("")
반복문
`for i(변수명) in fruits(리스트)
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 person in people:
name = person['name']
age = person['age']
if age > 20:
print(name, age)
- enumerate
for i, fruit in enumerate(fruits):
print(i, fruit)
if i == 4:
break #앞에 5개만 넘버링해서 출력
- 퀴즈
1) 짝수만 뽑기
num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]
for num in num_list:
if num & 2 ==0: #홀수만 if num % 2 == 1:
print(num)
2) 짝수 갯수
num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]
count = 0
for num in num_list:
if num & 1 == 0:
count += 1
print(count)
3) 리스트 안에 있는 모든 숫자 더하기
print(sum(num_list))
혹은
result = 0
for num in num_list:
result += num
print(result)
4) 리스트 안에 가장 큰 숫자 구하기
print(max(num_list))
혹은
max_value = 0
for num in num_list:
if num > max_value:
max_value = num
print(max_value)
함수
같은 동작을 하는 것
#주민등록번호를 입력받아 성별을 출력하는 함수
def check_gender(pin):
num = int(pin.split('-')[1][0])
if num % 2 == 0:
print('여성')
else:
print('남성')
my_pin = "200101-4012345"
check_gender(my_pin)
튜플, 집합
a = (1,2,3) print(a[0])
a_set = set(a) print(a_set)
a = ['사과','감','수박','참외','딸기']
b = ['사과','멜론','청포도','토마토','참외']
print(a & b) # 교집합
print(a | b) # 합집합
student_a = ['물리2','국어','수학1','음악','화학1','화학2','체육']
student_b = ['물리1','수학1','미술','화학2','체육']
sa = set(student_a)
sb = set(student_b)
print(sa - sb)
f-string
print(f'{name}의 점수는 {score}점입니다. ')
예외 처리 Try except
- 정확히 어디에서 에러가 났는지 확인할 수 없기 때문에 사용하지 말 것.
for person in people:
try:
if person['age'] > 20:
print (person['name'])
except:
name = person['name']
print(f'{name} - 에러입니다')
파일 불러오기
- from (파일명) import *
- ex)
from main_func import *
- 불러오는 파일의 함수를 사용할 수 있음
한 줄의 마법
- if문 삼항연산자
num = 3
result = ('짝수' if num % 2 == 0 else '홀수')
print(f'{num}은 {result}입니다.')
- for문 한방에 써버리기
a_list = [1, 3, 2, 5, 1, 2]
b_list = []
for a in a_list:
b_list.append(a*2)
print(b_list)
위 코드를
a_list = [1, 3, 2, 5, 1, 2]
b_list = [a*2 for a in a_list]
print(b_list)
map, filter, lambda식
def check_adult(person):
if person['age'] > 20:
return '성인'
else:
return '청소년'
result = map(check_adult, people) #people을 하나씩 돌면서 chek_adult 수행)
print(list(result)) #위 결과의 리턴값을 리스트로 보여줌
#위를 다른 코드로
def check_adult(person):
return '성인' if person['age'] > 20 else '청소년'
result = map(check_adult, people)
print(list(result))
result = map(lambda x: ('성인' if x['age'] > 20 else '청소년'), people)
print(list(result))
result = filter(lambda x: x['age'] > 20, people)
print(list(result))
함수 심화
- 함수의 매개변수
def cal(a, b):
return a + 2 * b
print(cal(3, 5))
print(cal(5, 3))
print(cal(a=3, b=5))
print(cal(b=5, a=3))
def cal2(a, b=3):
return a + 2 * b
print(cal2(4))
print(cal2(4, 2))
print(cal2(a=6))
print(cal2(a=1, b=7))
def call_names(*args):
for name in args:
print(f'{name}야 밥먹어라~')
call_names('철수','영수','희재')
def get_kwargs(**kwargs):
print(kwargs)
get_kwargs(name='bob')
get_kwargs(name='john', age='27')
클래스
- 예를 들어 아주 많은 몬스터들의 HP를 관리해야 할 때 용이하게 사용
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 = Monster()
m.damage(120)
m2 = Monster()
m2.damage(90)
m.status_check()
m2.status_check()
오늘 강의에서 배운 목록
- 변수 선언, 숫자, 문자, Bool 자료형, 비교 연산자, 논리 연산자, 대/소문자, 문자열 나누기, 대체하기, split, 정렬, 리스트 요소 찾기,조건문, 반복문, 함수, 튜플, 집합, f-string, 예외 처리, 파일 불러오기, if문 삼항연산자, for문 한 줄로 쓰기, Map, filter, lambda식, 함수 매개변수, 클래스
다시 확인하고 싶은 부분
짝수만 뽑기, 짝수 수, 리스트 안에 숫자 더하기, 가장 큰 숫자 구하기, 함수,
튜플, 집합, if문 삼항연산자, for문 한 줄로 쓰기, map, filter, lambda식, 함수 매개변수, 클래스