2주차 둘째 날.
어제는 자바 기초문법을 공부하고 오늘 파이썬을 하니까
뭔가 코드를 다 안적은 것만 같은 느낌이 계속 들었다.
확실히 코드가 간결해졌다.
앞서서 프로젝트를 진행하며 겉핥기 식으로 본 파이썬 문법을 한 번 공부해보자.
강의에 앞서 코드는 절대 외우는게 아니라는 강사님의 말씀을 다시 한 번 마음에 새기고..
a = 3
b = 2
print(a**b) #a의 b제곱. 9
정말 자바하다 파이썬 쓰니까 세상 편하네 약간 덜 쓴 느낌이다.
a = (3 > 2)
print(a) # true
a = (3 < 2)
print(a) # false
a = 2
b = 'a'
print(b) #변수 a가 아닌 문자열 a임
a = '2' #문자열 -> str(2)로도 쓸 수 있음
b = 'hello'
print(a+b) #2hello
a = 2 #숫자
b = 'hello'
print(a+b) #오류 발생
TypeError: unsupported operand type(s) for +: 'int' and 'str'
str( )
/ 정수형 -> int( )
len( )
: 문자열 길이 출력[:숫자], [숫자:]
: :
이 앞에 있으면 숫자까지의 앞 부분, 뒤에 있으면 뒷부분만 출력[숫자:숫자]
: 범위 지정text = 'abcdefgh'
result = text[3:]
print(result) #defgh
.split(' ')[인덱스넘버]
: 원소를 ' ' 안에 있는 항목을 기준으로 나눈다myemail = 'sparta@google.com'
result = myemail.split('@')
print(result) # ['sparta', 'google.com']
myemail = 'sparta@google.com'
result = myemail.split('@')[1].split('.')
print(result) #['google', 'com']
a_list = [2, '배', False, ['사과', '감'] ]
print(a_list[3][1]) #감
.append()
: 리스트 원소 추가
a_list = [1, 2, 3, 4 ]
a_list.append(99)
print(a_list) #[1, 2, 3, 4, 99]
.sort()
: sorting(정렬)이 되어 출럭.sort(reverse=True)
: 반대로 정렬되어 출력. 내림차순a_list = [1,5,2,3,6,4]
a_list.sort()
print(a_list) #[1, 2, 3, 4, 5, 6]
a_list = [1,5,2,3,6,4]
a_list.sort(reverse=True)
print(a_list) #[6, 5, 4, 3, 2, 1]
(원소 in 리스트이름)
a_list = [1,5,2,3,6,4]
result = (5 in a_list)
print(result) #True
result = (99 in a_list)
print(result) #False
a_dict = {'name':'bob', 'age':27}
print(a_dict['name']) #bob
a_dict = {'name':'bob', 'age':27, 'friend':['영희', '철수']}
print(a_dict['friend'][1]) #철수
people = [
{'name':'bob', 'age':27},
{'name':'john', 'age':30}
]
print(people[1]['age']) #30
a_dict = {'name':'bob', 'age':27, 'friend':['영희', '철수']}
a_dict['height'] = 180
print(a_dict) #{'name': 'bob', 'age': 27, 'friend': ['영희', '철수'], 'height': 180}
a_dict = {'name':'bob', 'age':27, 'friend':['영희', '철수']}
a_dict['height'] = 180
result = ('height' in a_dict)
print(result) #True
if
- elif
- else
money = 3800
if money > 3800:
print('택시 타')
else:
print('택시 못타ㅠ')
print('그럼 뭐타지') #else의 내용물임
#택시 못타ㅠ
그럼 뭐타지
money = 1300
if money > 3800:
print('택시 타')
elif money > 1200:
print('버스를 타자')
else:
print('걸어가자')
# 버스를 타자
money = 5000
if money > 3800:
print('택시 타')
else:
print('택시 못타ㅠ')
print('그럼 뭐타지') #else의 내용물이 아님
# 택시 타
그럼 뭐타지
fruits = ['사과', '배', '감']
for fruit in fruits: #변수 이름은 아무거나 가능
print(fruit) #사과
#배
#감
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)
#carry 38
#ben 27
#bobby 57
#red 32
#queen 25
for i, person in enumerate(people):
name = person['name']
age = person['age']
print(i, name, age)
#0 bob 20
#1 carry 38
#2 john 7
#3 smith 17
#4 ben 27
#5 bobby 57
#6 red 32
#7 queen 25
for i, person in enumerate(people):
name = person['name']
age = person['age']
print(i, name, age)
if i > 3:
break
#0 bob 20
#1 carry 38
#2 john 7
#3 smith 17
#4 ben 27
enumerate()
: 원소에 순서값 부여break
: 함수진행을 그만해라num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]
count = 0
for num in num_list:
if num % 2 == 0:
count +=1
print(count)
print
를 count+=1
과 같은 줄에 넣어서 해맴num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]
max = 0
for num in num_list:
if max < num:
max = num
print(max)
def
def sum(a, b):
return a+b
result = sum(1,2)
print(result) #3
Q. 주민등록번호를 입력받아 성별을 출력하는 함수 만들기
def check_gender(pin):
pin_gender = pin.split('-')[1][:1]
if int(pin_gender) % 2 == 0:
print('여성')
else :
print('남성')
check_gender('901111-1010018') #남성
check_gender('901111-2010018') #여성
check_gender('901111-4010018') #여성
:변수 = ('원소'.'소원')
리스트랑 같이 순서가 있는 자료형이지만 불변함. (추가/수정 불가)
a = ('사과', '감', '배')
print(a[1]) #감
:원소의 중복이 제거됨
a = [1, 2, 3, 5, 4, 5, 1, 7, 6, 7, 8]
a_set = set(a)
print(a_set) #{1, 2, 3, 4, 5, 6, 7, 8}
a = ['사과', '감', '배', '수박']
b = ['배', '사과', '포도']
a_set = set(a)
b_set = set(b)
print(a_set & b_set) #교집합 {'배', '사과'}
print(a_set | b_set) #합집합 {'사과', '감', '포도', '수박', '배'}
print(a_set - b_set) #차집합 {'수박', '감'}
f'문자열에 {중괄호}로 변수를 넣어주면 됨'
scores = [
{'name':'영수','score':70},
{'name':'영희','score':65},
{'name':'기찬','score':75},
]
for s in scores:
name = s['name']
score = s['score']
print(name+'의 점수는 '+ str(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:
if person['age'] > 20:
print(person['name']) #에러발생
age
값이 없기 때문에 에러가 발생함. 이럴 때 사용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 (조건) else (거짓일 때 값)
result = '짝수' if num % 2 == 0 else '홀수'
a_list
각 요소에 2를 곱한 새로운 리스트 만들기
map
, filter
, lamda
map(함수, 리스트)
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}
]
def check_adult(person):
if person['age'] > 20:
return '성인'
else:
return '청소년'
result = map(check_adult, people)
print(list(result)) #['청소년', '성인', '청소년', '청소년', '성인', '성인', '성인', '성인']
people
을 하나하나 돌면서 check_adult
함수에 넣고 그 결과값을 리스트로 묶어라
lamda x: 표현식
리스트를 하나씩 돌면서 person(or x)에다가 넣을 건데 그 person(or x)를 가지고 표현식을 리턴해라
filter
: 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)
print(list(result))
# [{'name': 'carry', 'age': 38}, {'name': 'ben', 'age': 27}, {'name': 'bobby', 'age': 57}, {'name': 'red', 'age': 32}, {'name': 'queen', 'age': 25}]
def cal(a,b):
return a+2*b
result = cal(b=2, a=1) #지정함. 순서를 안 맞춰도 됨
print(result) #5
def cal(a,b=2): #기본 값 지정
return a+2*b
result = cal(1) #b를 넣지 않으면 기본값으로 결과출력
print(result) #5
result = cal(1 ,3) #넣으면 넣은 값으로 출력
print(result) #7
*args
: 변수를 무제한으로 넣을 수 있음
def cal(*args):
for name in args:
print(f'{name} 밥먹어라~')
cal('영수', '청수')
#영수 밥먹어라~
#청수 밥먹어라~
**kwargs
: 인자를 지정해서 딕셔너리로 많이 넣어줄 수 있음
def cal(**kwargs):
print(kwargs)
cal(name='bob', age = 30, height = 180)
# {'name': 'bob', 'age': 30, 'height': 180}
*args
와 **kwargs
는 라이브러리 사용 시 많이 있을 수 있다오늘은 파이썬 문법에 대해 뭘 많이 배운 것 같다.
아직 머리에 다 들어오진 않아서 복습이 필요할 것 같지만
자바와 비슷한 부분이 있어서 그래도 이해하는 데 어려움은 없었다.
파이썬은 코드가 간단간단해서 실수하기 좋을 것 같다.
이미 강의를 예제를 풀며 코드를 칠 때 들여쓰기가 안맞는 실수를 했다..ㅎ
자바던 파이썬이던 실수를 제일 조심해야할 것 같다.
너무 당연한 말인가..ㅎ