Today I Learned

[내일배움캠프 QA/QC 트랙 6기 본캠프] TIL #010 — 🔙🔙🔙

JiJi0406 2026. 5. 22. 21:33

001

오늘의 키워드: 복습

 

오늘은 라이브 세션과 과제를 풀어보는 시간을 통해 그동안 배운 내용들을 싹 훑어보는 복습의 날이 된 것 같다. 이제 간단한 함수 문제들은 백지 상태에서도 웬만하면 풀 수 있는 것 같다. 굿굿.

 

근데 문제가 조금만 복잡해지거나 가끔 명령어 하나가 기억 안 나면 손이 굳는 건 여전하다. 정 생각 안 나면 그동안 써온 TIL에서 찾아보는데, 이럴 때마다 나름 열심히 정리해두길 잘했다는 생각이 든다 ^^ 

 

그리고 오히려 함수보다 더 기본적이라고 할 수 있는 앞의 내용들 중에 헷갈리는 게 여러 개 있다. 중간중간 빵꾸가 뚫려있는 느낌이랄까... 다들 공부에서 제일 중요한 건 복습이라고들 하니까, 뚫린 구멍 메꾼다 생각하고 하나씩 정리한 다음에 나중에 다시 들여다봐야겠다. !!!


 

002

오늘 배운 내용

 

 

[라이브 세션] : 허진성 튜터님  Python 실력 쑥쑥 심화 1회차

 

 오늘 라이브 세션은 그동안 배운 파이썬의 기초적인 내용들을 복습하는 시간이었다.

분명 다 배운 건데..... 낯이 익는데.... 구체적인 사용법이 헷갈리는 게 좀 있었다 😓

쭉 정리해보자...~

 

1. f-string & 출력

문자열 앞에 f를 붙이고 중괄호 안에 변수를 넣는 방식.

"안녕 " + 이름 대신 f"안녕 {이름}" 으로 쓴다.

print의 sep은 출력값 사이 구분자 지정. (기본값은 공백)

이름 = '짱구'
나이 = 5
print(f"안녕하세요 저는 {이름}이구요, 나이는 {나이}살입니다.")
# → 변수를 문자열 안에 바로 넣을 때 f"" 사용

print("짱구", "유리", "훈이", "철수", "맹구", sep='/')
# → sep: 출력값 사이에 넣을 구분자 지정

 

 

2. 자료형(Data Type) 연산 가능 여부

👌가능

연산 예시 결과
int + float 1 + 1.5 2.5 (정수형 + 실수형의 결과는 실수형)
str + str "hello" + " world" "hello world"
str * int "ha" * 3 "hahaha"
list + list [1,2] + [3,4] [1,2,3,4]
list * int [1,2] * 3 [1,2,1,2,1,2]

 

❌TypeError (안 됨)

  • str + int
  • list + int
  • list - int 등... 더 있었는데 기억이 안 난다.

 

 
 

3. 리스트 주요 메서드


메서드 동작
append(값) 값을 통째로 추가
extend(리스트) 리스트를 풀어서 요소를 하나씩 추가
리스트 + [값] 새 리스트 반환. 원본은 그대로
pop(인덱스) 해당 인덱스 값을 꺼내고 삭제
remove(값) 해당 값을 찾아서 삭제
b = a 같은 객체 참조. 하나 바꾸면 둘 다 바뀜
a.copy() 독립적으로 값만 복사
슬라이싱 tip. [0::2] 홀수 인덱스, [1::2] 짝수 인덱스

 

4. 문자열 메서드

메서드 동작
.upper() 전체 대문자
.lower() 전체 소문자
.title() 각 단어 첫 글자 대문자
.capitalize() 문장 맨 앞 글자만 대문자
'구분자'.join() 리스트 요소 사이에 구분자 끼워 문자열로 합치기

 

5.  sort vs sorted

 
분명히 이틀 전인가...에도 헷갈려서 정리했던 거 같은데 여전히 헷갈림 😅
좀 더 알아먹기 쉬운 비유 뭐 없나 싶어서 제미나이한테 물어봤는데 이렇게 알려줬다.
  • .sort(): 내 방 물건들을 그 자리에서 직접 정리 정돈하는 것 (원본이 바뀜)
  • sorted(): 내 방을 그대로 복사한 '새로운 가상 방'을 만들어서 거기서 정리 정돈하는 것 (원본은 그대로 유지)
numbers = [3, 1, 4]

# 원본 리스트를 그 자리에서 바로 정렬해라!
numbers.sort()

print(numbers)
# 출력: [1, 3, 4] -> 원본이 완전히 바뀜!

⚠️ 흔히 하는 실수!
result = numbers.sort() 처럼 변수에 담으려고 하면 None이 나옴. 왜냐? 원본을 그 자리에서 고치고 끝내버려서 밖으로 돌려줄 결과(return)가 없기 때문임 

 
numbers = [3, 1, 4]

# 원본은 건들지 말고, 정렬된 새 리스트를 복사해서 넘겨줘!
new_numbers = sorted(numbers)

print(numbers)
# 출력: [3, 1, 4] -> 원본은 끄떡없음!

print(new_numbers)
# 출력: [1, 3, 4] -> 새 바구니에 정렬된 결과가 담김!
 

결론 : 원본을 바꾸고 싶으면 .sort(), 원본 유지하면서 정렬된 결과만 쓰고 싶으면 sorted()

 

6. continue vs pass

얘도 뭔가 비슷해보여서 헷갈리는 거
팀장님께서 기막힌 비유를 들어주심. 감사합니다 😻

 

pass 조건에 걸려도 이후 코드 계속 실행
continue 해당 반복을 건너뛰고 이후 코드 실행 안 함
실무에서는 이렇게 쓰이기도 한다네요. 내 친구(젬나이)가 알려줌

 

 

세션 끝나고 코드카타 풀 때 continue를 써보았으나, if 조건 안 맞으면 알아서 다음 반복으로 넘어가기 때문에 else는 굳이 없어도 된다고 함 😅

 

7. 딕셔너리

new_dict = {'이름': '루피', '직책': '선장', '소속': '밀짚모자 해적단'}

new_dict.keys()    # 키만 반환
new_dict.values()  # 값만 반환
new_dict.items()   # 키-값 쌍 반환

new_dict['스킬'] = '고무고무 총'  # 새 키-값 추가

 

 

8. print vs return

얘도 헷갈림

헷갈리는 거 왜이렇게 많아 ㅋㅋㅋ

 
print 화면 출력만. 반환값 없음(None)
return 결과값 반환. 변수에 저장하거나 다른 곳에 활용 가능
def a():
    print(1)   # 화면에 출력만 함. 값을 저장하거나 전달할 수 없음

def b():
    return 1   # 함수의 결과값을 반환. 변수에 저장하거나 다른 곳에 활용 가능

result = b()   # result = 1로 저장됨
result = a()   # result = None (print는 반환값이 없음)​
 
 

 

[VOD 강의] 데이터 분석 파이썬 종합반 5주차

는 과제하느라 못 들었다 !


003

오늘의 시행착오

 

▼ HACCP 테스트를 받지 못한 품목 리스트를 반환하는 함수 구하기

어제 파이썬 라이브세션 노션 두번째 문제

빈 리스트 만드는 거 자꾸 까먹음!! 

빈 리스트 만들고, 거기다가 조건에 맞는 거 추가(.append)하는 흐름 까먹지 말자.

 

 

 

그리고 이어지는 문제에서 좀 막힘...😅

 

▼HACCP 미완료 품목 중에서 중량 미달에 해당하는 품목의 갯수를 반환하는 함수

처음 짰던 코드 (부끄...)
새로 짠 코드 (with 제미나이)

 

내 코드 vs 수정된 코드: 바뀐 점 딱 3가지
  1. 함수 정의할 때 괄호 안의 문법 에러 수정
    • 기존: def underweight(untested(factory_products...)): X 안 돼!!! (함수 선언할 때 다른 함수 호출문을 통째로 넣음)
    • 변경: def underweight(untested_list, factory_products) (위의 함수 데이터를 받아올 매개변수 만들어서 깔끔하게 변경)
  2. .values() → .items()
    • 기존: factory_products.values()를 써서 '중량'만 꺼냄   꺼내진 중량이 미완료 품목인지 확인 불가
    • 변경: .items()를 써서 '품목명(key)'과 '중량(weight)'을 동시에 꺼내어 필터링이 가능해짐.
  3. 조건문에 and 결합
    • 중량만 100 미만인지 보던 것에  if key in untested_list 조건도 추가해서 "HACCP 미완료 품목이 맞는지"까지 동시에 검사하도록 수정함.

 

일단 오늘은 ai의 도움을 쫌 받았지만,,, 내용 잘 기억했다가 다음주에 다시 해보자.

 

 

 

어제 min 안 넣고 풀었던 문제도 다시 풀어봄

 

▼ 코드 동작 원리

1. 빈 주머니 만들기 (answer = [])

조건을 만족하는 x들을 저장할 빈 리스트를 생성

나중에 이 리스트에 모인 숫자 중 최솟값을 골라냄

 

2. for 반복문으로 후보 골라냄 (for x in range(2, n):)

x가 될 수 있는 숫자를 2부터 n-1까지 하나씩 꺼내며 반복

(1은 어떤 수를 나눠도 나머지가 0이 되니까 2부터 시작)

 

3. 조건문 필터링 리스트에 추가 (if n % x == 1:)

파이썬의 % 연산자를 사용해 나머지가 1이 되는지 확인,

 

4. 리스트에 추가 (answer.append(x))

조건에 부합하면 1번에서 만든 리스트에 추가(.append)

 

5. 정답 반환 (return min(answer))

반복이 끝나 answer 리스트에 저장된 값 중 최소값을 찾아야 함

min()으로 리스트 내 가장 작은 값 도출하여 반환


 

004

다음 주 학습할 것

  • (주말) 일주일 동안 공부한 거 안 까먹게 하루 1시간 씩이라도 보기

           ㄴ 튜터님도, 매니저님도 주말엔 쉬라고 하셨으니 정말 조금만......(근데 과연 볼까?)

  • 파이썬 종합반 강의 5주차 수강 (~화요일)
  • 과제 레벨 3 좀만 더 고민해보기... (너무 어려워요 ㅠㅠㅠ)

 


 

 

 

 

+ 여담...

저의 TIL이 QAQC 6기의 첫 번째 우수 TIL로 뽑혔다고 합니다.

갑자기 방문자수 늘어서 뭔가 좀 부끄러움...........

아무튼 감사합니다.