[250313목15H] 부트캠프 시작

윤승호·2025년 3월 14일

부트캠프 시작 날이다. 약 2주간 프리코스 강의를 들었는데, 그 내용을 몇 시간만에 끝내더라... 그리고 이미 배운 내용인데도 막상 시작하니 기억이 잘 나지 않았다. 부트캠프인데도 다들 개발 경험이 있어서 실력이 좋다. 내가 제일 바닥인 느낌. 그래도 꾸준히 하다 보면 되겠지! 여러 번 반복해서 내 것으로 만들어야겠다!

프리코스에 없었던 객체와 클래스 부분이 생소해서 특히 어려웠다.

학습시간 10:00~01:00 (당일15H/누적15H)

학습내용

파이썬 개념 정리

  • 추상화: 복잡한 개념을 숨기는 것
  • Def = Define의 약어로 함수를 짜기 위한 시작어
  • 정수 + 소수 = 소수, 나누기는 항상 소수
  • // = Floor Division 소수는 버리고 정수만 남김
  • int(3.8) == 3
  • print(“{:.1f}원”.format(price) = 소수점 1자리까지만 출력
  • 인공지능 학습 멈추는 조건을 Boolean으로 주로 설정함
    ㄴ learning_rate > 0.0001 or mse_loss(a, b) < 0.004
  • cuda연산 = CPU가 아닌 GPU로 연산
  • def X(a, b, c) <- 이걸 옵셔널 파라미터라고 함
  • 변수는 로컬변수와 글로벌변수 존재, 상수는 constant라고 함
  • %는 모듈러라고 읽음(나누고 남은 숫자 확인) 7%2=1, 7%5=2

리스트 관련

  • num[3] # num 리스트에서 3번 인덱스 값 찾기
  • num[이상:미만] # num 리스트 슬라이싱
  • num[0] = 7 # num 리스트 0번 인덱스의 값 7로 변환
  • num.append(5) # 리스트에 값 5 추가
  • del num[3] # num 리스트에서 3번 인덱스 값 삭제
  • num.insert(4, 37) # num 리스트 4번 인덱스에 값 37 추가
  • x = sorted(num, reversed=True) # num 리스트 정렬(리버스), 기존 리스트 변경 X
  • num.sort(reverse=True) # num 리스트 정렬(리버스), 기존 리스트 변경 O
  • 100 in num # num 리스트에서 값 100의 인덱스 번호 찾기
  • num[0][1] # num 0번 인덱스 리스트의 1번 인덱스 값 찾기
  • num.index(7) # num 리스트에서 값 7의 인덱스 번호 찾기
  • num.remove(7) # num 리스트에서 7번 인덱스 값 삭제
  • for x in range(1, 10) # 1이상 11미만 반복
  • num[::-1] # reverse와 같은 기능
  • 리스트 카운팅하는 코드
list_data = ["apple", "banana", "apple", "orange", "banana", "apple"]
list_counter = {}

for name in list_data:
    if name not in list_counter:
        list_counter[name] = 1
    else:
        list_counter[name] += 1

print(list_counter)

딕셔너리 관련

  • 기본 형식 dict = {key: value, key: value, key: value}
  • dict[10] = 100 # {10: 100} 추가
  • dict.keys() # key값 전부 호출
  • dict.items() # value값 전부 호출
  • key와 values 위치 변경하는 함수
  • y = list(x) # x 리스트를 변경하지 않고 y에 저장
def reverse_dict(old_dict):
    new_dict = {}
    for key, value in old_dict.items():
        new_dict[value] = key
    return new_dict

모듈 관련

  • !pip install(설치 후엔 import로) numpy as np
  • import math (math.log10(100) & math.cos(0) 등)
  • import random
    ㄴ random.random() # 0~1 랜덤 소수 출력
    ㄴ random.randint(1, 20) # 1~20 랜덤 정수 출력
    ㄴ random.uniform(0, 1) # 0~1 랜덤 소수 출력(균등확률)
  • import os
    ㄴ os.getcwd() # 현재 파일의 경로 출력
    ㄴ os.listdir() # 현재 폴더의 파일 출력
  • import datetime
    ㄴ x = datetime.datetime(2020, 3, 14)
    출력 포맷 변경
    ㄴ today = datetime.datetime.now()
    ㄴ print(today.strftime(“%A, %B, %dth, %Y”)) 포맷코드표 암기!!
  • with open(‘파일명’, ‘r(읽기)&w(덮어쓰기)&a(추가쓰기’) as f:
    ㄴ 여기서 f.write = print 와 같은 기능임
  • 문자열 트림
    ㄴ “문자열”.strip() # 앞뒤 공백 트림
    ㄴ “문자열”.lstrip() # 앞 공백 트림
    ㄴ “문자열”.rtrip() # 뒷 공백 트림
    ㄴ “문자열”.split() # 모든 공백 트림
    ㄴ x.split(“.”) # 온점(.) 기준으로 삭제 후 슬라이싱

클래스&인스턴스(템플릿&객체)

  • 클래스는 첫문자 대문자 및 붙여서 작성 (UserData처럼)
  • 클래스 내 함수 표기법 동일, 메소드는 method로 표기
  • 자주 쓰는 메소드
    init() # initialize, 객체 초기화
    str() # string, 문자열 반환
    repr() # representation, 디버깅 용 문자열 반환
    len() # length
    getitem() # 인덱싱
    setitem() # 인덱싱
    call() # 함수처럼 객체 호출
    add() # 덧셈
    eq() # 비교
    del() # 소멸자
  • 클래스 코딩 예시
class User:
    def __init__(self, name, id, pw):
        self.name = name
        self.id = id
        self.pw = pw

    def say_hello(self):
        print(f"안녕하세요. 저는 {self.name} 입니다.")

    def login(self, id, pw):
        if (self.id == id) and (self.pw == pw):
            print("로그인 성공")
            self.say_hello()
        else:
            print("로그인 실패")

    def __str__(self):
        return f"사용자: {self.name}({self.id})"

user1 = User("홍길동", "hong1234", "12345678")

profile
나는 AI 엔지니어가 된다.

0개의 댓글