[내일배움단 ai 트랙 3기]파이썬 문법(5)

2022. 9. 15. 00:01스파르타코딩클럽[AI트랙 3기]/TIL

22.09.14

 신기하다. 이제서야 지난날 배웠던 파이썬의 구조들이 살짝씩 눈에 익기 시작한다. 근데 아직 덜익어서 문제를 풀 수 없음... 오늘 내준 과제도 어렵다!!!!!왜 나만 어렵냐고!! 내가 뭘모르는지 아직도 몰라서 물어볼 수 도 없다. 그래도 오늘 용기내서 창호튜터님께 질문하러갔다. 까먹을 수도 있으니 지금 써놓자. sort 사용법에 관한건데 pprint 하는 곳에 sort를 아예 같이 넣어주는 실수를 범했다. 차근차근 알아가는거지~ 낼은 더 열심히 해야지.. 아그리고 백준 기본수학 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 웃음밖에 안나오더라.. 언터쳐블... 난 누구인가.. 어디로 가는가...


ㅁ파이썬(이창호 튜터님)

과제 3번 문제

-객체지향이라는 말을 많이 듣게 됨.

class를 사용하되 class에서 데이터를 설정하는 거랑, 데이터를 보여주는 것을 따로 설정해주는 것. > set/get

def set.profile(self, profile):

self.profile = profile

 

init을 굳이 넣은 이유는 프로그래밍하다가 예상치 못한 문제 직면시 해결됨

set, get 없이 풀기

 

-try exception

try:

pritnt(num)

except:

print(‘에러가 발생합니다.’)

if문을 try로 대체 가능. 그러나 좋은 구문은 아님. 어떤 에러가 났는지 확인이 안되기 때문.

그래서 try문쓸때는 error코드별로 어떤 메시지가 나올지 정해주기도 함.

try :

except ValueError:

except ZeroDivisionError:

except Exception as e :

print(f“예상하지 못한 에러가 발생했습니다. error : {e}”)

pass도 사용 가능. continue는 다음 반복문으로 넘기는것이고 pass는 코드가 있든 없든 똑같음.

-stacktrace

알고리즘할때는 몰라도 되지만, 큰프로젝트나 장고같은 프라임워크 사용시 필요.

어디서 에러 발생했는지 타고 들어가는 것.

 

*2교시

-축약식

a = [x for x in range(10)]

print(a)

복잡한 코드를 축약식으로 사용하면 안 하는 것만 못하다. 오히려 가독성이 떨어짐. 그래서 많은 양의 내용이 들어가면 그냥 반복문 쓰는 것이 좋음.

for

for i in range(5):

print(i)

ㅇ리스트 축약식

numbers = [x for x in range(5)]

print(numbers)

numbers = [x * 2 for x in range(5)] , print(numbers) > [0,2,4,6,8] 나옴.

numbers = [2 for x in range(5)] , print(numbers) > [2,2,2,2,2] 나옴. (x대신에 _가능)

따로 리스트 필요 없이 이미 x in range(5) 하면 0,1,2,3,4가 담김.

-리스트 축약식 안쓰고 for

average_age = sum([x[1] for x in people]) / len(people)

-input도 가능

count = int(input())

user_inputs = [input() for x in range(count)]

print(user_inputs)

-import는 약속 맨위에 쓰는 것. 그리고 사용할 것 보다 위에 있어야 사용 가능.

 

*3교시

-lambda : 익명함수, 단독으로는 잘 안쓰임.(map, filter, sort랑 같이 쓰임)

lambda x, y : x+y (x,y를 더해준다)

-map 함수

user_input = list(map(int,input().split()))

map은 두 개의 인자를 받음, 함수와 리스트(튜플 같은 반복할 수 있는 자료형) 맵안에서는 자료형의 요소를 돌면서 함수를 실행 시켜줌.

*궁금한 것은 공식문서 찾아보기

maplist축약식으로 대체 가능 (같은 것임.)

double_numbers = list(map(lambda x : x*2, numbers))

double_numbers = [x*2 for x in numbers]

-filter: 걸러주는 것

짝수만 담기even_numbers = [x for x in numbers if x%2 == 0]

짝수만 x2해서 담기 even_numbers = [2*x for x in numbers if x%2 == 0]

-나이가 30살 이상인 사람

people = [x for x in people if x[1]>= 30]

print(people) 하면 30살 이상만 남김.

-sort : list를 정렬

numbers = []

numbers.sort 하면 순서대로. numbers.sort(reverse=True)하면 역순으로

복잡한 자료에서는 사람, 나이 자료에서 people.sort(key=lambda x: x[1])하면 key에서 정렬 기준이 결정됨.

 

ㅁ파이썬 과제

https://pocachips.tistory.com/34