[내일배움캠프]

[QA/QC_2기]파이썬 다시보기: 본캠프 Day 9_2025.05.22.

mulmoknnhama 2025. 5. 22. 21:44

주말이 가까워지는 9일차 아침.

날씨 어플에서는 대체로 맑음(구름이 좀 많이 있는데...?)라고 한다

 

이제 좀 일어나는 시간이 8시 부근으로 앞당겨졌다.

아침시간을 조금 더 효율적으로 쓰기가 가능!

 

햇빛이 조금 보이는 오늘 하루도 화이팅~!


프로그래밍 기초 주차

본캠프 2주차

 

코드카타, 데이터 분석 파이썬 종합반 2주차, 라이브 세션을 진행


코드카타

아침을 깨우는 문제풀이시간

 

알고리즘 문제, SQL 문제 풀기(최소 하루에 두개씩 풀어보자!)

 

알고리즘 문제: 몫 구하기

제출했던 것 1

몫을 구하는 식: a//b

나머지를 구하는 식: a%b

 

풀이 및 결과

위 사진대로 썼다. - 정답! 


SQL 문제: 중복 제거하기

제출했던 것 2

이름 개수 세기: count()

공백란 값 제외하고 세기: is not null

중복 제외: distinct

 

풀이 및 결과

select count(name)
from animal_id
where is not null

풀이한 것.

하지만, 위 코드는 오답이다

 

저기서 distinct 가 들어가야 중복이 제거된다.

찾아보다가 중복제거한다는 구문이 있었고, 나는 그걸 까먹었다.

 

솔직히 SQL 복습을 안해서 생긴 참사...

잊지말자! 중복 제거 구문 distinct


데이터 분석 파이썬 종합반 2주차 (학습)

강의를 듣고 다시 써보자

 

파이썬의 뼈대: 리스트, 튜플, 딕셔너리

다시 공부해보자 개념 집합?!


리스트[list]

 

순서가 있는 가변가능한 자료들 / [대괄호]로 표기

 

리스트의 메소드

.append(): 항목 추가

.extend(): 다른 리스트 추가

 

.insert(): 특정 위치에 항목 추가

-몇 번째 인덱스에 무엇을 넣는 것 / xclue.insert(2, 87): 2번째 인덱스에 87을 추가

 

.remove(): 특정 값 제거

.pop(): 특정 위치의 값 반환 후, 제거

.index(): 특정 값의 인덱스 찾기

.count(): 수 세기

.sort(): 정렬하기

.reverse(): 반대로 정렬하기

 

.clear(): 리스트 항목 전체 제거

+

del a_list[3]: a_list의 인덱스 3의 위치한 값을 제거


리스트 파생개념: 슬라이싱[:]

 

[:] : 부터~미만 추출(슬라이싱 방향은 정방향 (->))

 

기존 슬라이싱 개념에 추가로 알아는 것

 

list[start:end:step]

list[1:5:2] : 여기서 2의 위치가 step이다

뒤집거나, 간격을 띄워서 추출할 때 쓰임. 하지만 생각보다 많이는 안쓰인다고 함

 

list[::-1] : 리스트 거꾸로 뒤집기


튜플(tuple)

 

리스트와 다른 불변한 값을 지니는 자료들 / (소괄호)로 표기

삭제, 추가, 수정 절대 불가능 단, 튜플과 튜플을 더하거나 튜플을 반복시키는 값은 가능하다!

 

튜플의 메소드

리스트에 쓰이는 count, index가 들어간다

 

리스트 <-> 튜플

list(): 리스트로 변환

tuple(): 튜플로 변환


딕셔너리{diction:ary}

 

키(key)와 값(value)이 한 쌍으로 이루어진 자료 / {중괄호}로 표기

키는 달라야하나 값은 같을 수 있음

 

딕셔너리의 메소드

.keys(): 모든 키를 dict_keys 객체로 반환

.values(): 모든 값을 dict_values 객체로 반환

.items(): 모든 키-값 쌍을 (키, 값) 튜플로 구성된 dict_items 객체로 반환

 

.get(): 지정된 키에 대한 값을 반환

얘는 그냥 dict['key']랑 같은 개념이라 크게 중요하지 않은 것 같다

 

.pop(): 지정된 키와 해당 값을 딕셔너리에서 제거하고 값을 반환

.popitem(): 딕셔너리에서 마지막 키-값 쌍을 제거하고 반환


라이브 세션

튜터님이 진행하는 실시간 강의시간

 

조건문반복문

자주 쓰일 것이니 제대로 다시 봐보도록 하자


조건문

조건문의 처리 순서도

if 조건A:
    처리A
elif 조건B:
    처리B
else:
    처리C
처리D

조건 투입 -> [ if(참일 시, 처리 D로 이동) -> elif(참일 시, 처리 D로 이동) -> else ] -> 처리 D

 

조건문은 위에서 아래 순서로 조건을 평가하며, 첫번째로 참인 조건만 실행하고 나머지는 무시한다


반복문 - for, while

 

for 반복문

 

문법은 이렇다

for (iterator) in (Sequence Type):
	(실행구문1)

일반적으로 iterator는 반복자라고 번역. 반복문 안에서만 사용되는 변수

 

 

for문에서 반복할 수 있는 자료형은 리스트, 문자열 자료형, range() 메소드(내장 함수) 등이 가능

 

range()[슬라:이싱]

range(4) <-> [:4]

range(1,5) <-> [1:5]

range(2, 6, 3) <-> [2:6:3]


while 반복문

 

여기 반복문은 처음 배워본다.(알아가야 한다고 하나?)

이런 구문도 있고, 매우 필요하니 꼭! 알아두도록 하자

n = 0
while n < 3:
	print('while 3번만 실행')
	n = n + 1

while 옆에는 조건문, 아래는 실행구문이다.


세션 막바지: 숙제

 

3-3. 문제 풀어보기

1부터 입력한 정수까지 1씩 증가시켜 출력하는 프로그램을 작성하되, 3의 배수인 경우는 출력하지 않도록 만들어보자.

입력: 정수 1개를 입력받는다.(1 ~ 100)

출력: 1부터 입력한 정수까지 출력합니다. 단, 3의 배수는 제외하고 출력합니다.

 

입력 예시 

(->) 10

출력 예시

(->) 1 2 4 5 7 8 10

 

제출 답안

num = 1
while num <= 100:
  if num % 3 != 0:
    print(num)
  num += 1

코드카타

알고리즘 13번 문제(스포아녀?)

 

for문으로 접근해도 숫자에 넣을 값을 어떻게 처리할지 몰라 답을 봤다.

알고리즘 13번 문제

def solution(n):
    answer = 0

    num_list = list(str(n))
    for num in num_list:
        answer += int(num)

    return answer

정답코드: 정답 코드보고 이해했다. 뭐가 뭔지 보임

 

해석: n이라는 숫자를 문자형으로 변환 (str())

-> 그다음 리스트형태로 전환 (list())

-> 그리고 그것은 num_list라는 변수에 담는다

-> for 반복문(num_list의(in num_list) 개별적 num 설정(for num))

-> answer += int(num)answer = answer + int(num) 과 같다

-> num을 정수형(int())으로 전환한 것을 answer 마다 더한다

-> answer 값 반환


마치면서

 

파이썬 개념을 다시 보는거고 확실하게 각인하는 과정이라 어렵지는 않았다

그러나, 숙제문제에서 상당한 어려움을 겪으면서 아직 나는 멀었구나 싶다.

전전긍긍하다니..!

 

그나마 나은 것은 문법이 이제 눈에 들어오기 시작한 것.

몇몇 문장이 읽어지기 시작했다.

 

하지만 여기서 만족하지 않고, 스스로 자만하지 않고 더 공부하면서 나아가야 한다.

완벽할 순 없지만 실수를 줄여주기 위한 지식은 반드시 필요한 것.

 

내일도 라이브세션이 있고, 데이터 분석 파이썬 종합반을 빠르게 진도를 빼보도록하자!