ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • <TIL> 2024-01-04
    내일배움캠프(데이터 분석 부트캠프 1기)/TIL & WIL 2024. 1. 4. 21:24
    • 오늘 학습한 것
      1. 스파르타 파이썬 문법 기초 강의 수강
      2. 내일배움캠프 파이썬 기초 개인과제 
      3. 데이터 공부법 및 취업 특강 수강

    오전부터는 2시간 짜리 파이썬 문법 기초 강의를 수강했다.

     

    강의 자체는 파이썬의 정말 기초적인 문법에서 약간의 문법적 응용에 대한 강의였다. 

    강의 내용 대부분은 다 자주 사용하고 있는 내용이었는데 판다스 테이블 형태의  데이터를 핸들링 하는 것만 익숙해져있다보니 딕셔너리, 클래스, 튜플 이런 문법 형태들이 어색하게 다가왔다.

     

    그리고  오후에는 배운 내용을 기반으로한  파이썬 기초에 관한 개인과제를 풀었다.

    단순한 파이썬 알고리즘에 대한 문제를 데이터 분석 테마에 맞춘 예시를 들어 낸 문제였다.

     푼 과제 코드는 아래와 같다.

     

    1. 제품 재고 관리

    각 제품의 제고량이 주어진 기준치보다 많은지 적은지를 판단(동일한 것은 고려하지 않음)

    inventory_data = [
        ['Apple', 30],
        ['Banana', 20],
        ['Orange', 50],
        ['Pear', 10]
    ]
    
    def check_inventory(inventory, value) : 
        for i in range(len(inventory)) : 
            if inventory[i][1] > value :
                print(f'{inventory[i][0]} 상품 재고는 {inventory[i][1]}개로 재고 과잉입니다.')
            elif inventory[i][1] == value :
                pass
            else : 
                print(f'{inventory[i][0]} 상품 재고는 {inventory[i][1]}개로 재고 부족입니다.')
                
                
     check_inventory(inventory_data, 20)
     
    # 실행결과
    # Apple 상품 재고는 30개로 재고 과잉입니다.
    # Orange 상품 재고는 50개로 재고 과잉입니다.
    # Pear 상품 재고는 10개로 재고 부족입니다.

     

     

    2. 이메일 주소 유효성 검사

    1. 각 이메일 주소가 올바른 형식을 갖추고 있는지 검사
    2. 올바른 형식의 이메일 주소인 경우, "유효한 이메일 주소입니다."를 출력
    3. 올바르지 않은 형식의 경우, "유효하지 않은 이메일 주소입니다."를 출력
    • 하나의 '@' 기호를 포함해야 함
    • '@' 기호 앞에는 하나 이상의 문자가 있어야 함
    • '@' 기호 뒤에는 도메인명이 와야 하며, 도메인명은 '.'을 포함한 하나 이상의 문자로 구성되어야 함
    email_list = [
        "example@example.com",
        "wrongemail@.com",
        "anotherexample.com",
        "correct@email.co.uk"
    ]
    
    def validate_emails(email_list) : 
        for i in range(len(email_list)) : 
            if email_list[i].find('@') == -1 : 
                print(f'{email_list[i]}는 유효하지 않은 이메일입니다.')
                continue
            elif email_list[i].find('@') == 0 : 
                print(f'{email_list[i]}는 유효하지 않은 이메일입니다.')
                continue
            elif email_list[i].split('@')[1].find('.') == -1 :
                print(f'{email_list[i]}는 유효하지 않은 이메일입니다.')
                continue
            elif len(email_list[i].split('@')[1].split('.')[0]) < 1 : 
                print(f'{email_list[i]}는 유효하지 않은 이메일입니다.')
                continue
            else : 
                print(f'{email_list[i]}는 유효한 이메일입니다.')
                
    validate_emails(email_list)
    
    # 실행결과
    # example@example.com는 유효한 이메일입니다.
    # wrongemail@.com는 유효하지 않은 이메일입니다.
    # anotherexample.com는 유효하지 않은 이메일입니다.
    # correct@email.co.uk는 유효한 이메일입니다.

     

     

    3. 마라톤 미 완주자 찾기

    1. 참가자 명단에서 완주자 명단에 없는 선수를 찾기, 단 참가자명단에는 동명이인이 있을 수 있음
    2. 완주하지 못한 선수의 이름을 반환
    participant = ["mike", "lisa", "tom", "lisa", 'tom']
    completion = ["tom", "mike", "lisa"]
    
    def find_non_completer(participant, completion) : 
        temp_part = participant.copy()
        for i in range(len(completion)) : 
            if completion[i] in temp_part : 
                temp_part.remove(completion[i])
        print(temp_part)
        
    find_non_completer(participant, completion)
    
    # 리턴 값 : ['lisa', 'tom']

     

     

    4. 고객 데이터 관리 시스템(클래스)

    • Customer 클래스는 고객의 고객의 이름, ② 이메일, ③ 포인트 점수를 속성으로 가짐
    • 다음 메소드들을 생성
      • join_customer: 고객의 이름, 이메일, 포인트를 설정
      • add_points(amount): 주어진 양만큼 포인트 점수를 추가
      • reduce_points(amount): 주어진 양만큼 포인트 점수를 감소시킴(이때 포인트는 음수가 되지 않도록 함)
    class Customer() : 
        name = ''
        email = ''
        point = 0
        
        def join_customer(self, name, email, point) : 
            self.name = name
            self.email = email
            self.point = point
            
        def add_points(self, point) : 
            self.point += point
            print('현재 포인트 :',self.point)
            
        def reduce_points(self, point) : 
            self.point -= point
            if self.point < 0 : 
                self.point = 0
                print('포인트 부족으로 인해 0으로 초기화 되었습니다.')
            print('현재 포인트 :',self.point)
            
            
    #확인코드
    customer1 = Customer()
    customer1.join_customer("Alice", "alice@example.com", 100)
    customer1.add_points(50)
    customer1.reduce_points(20)
    customer1.reduce_points(150)  # 포인트 부족 상황 테스트
    
    # 실행 결과
    # 현재 포인트 : 150 
    # 현재 포인트 : 130 
    # 포인트가 부족하여 0으로 초기화 되었습니다.
    # 현재 포인트 : 0

     

     

    다음주 화요일인 1월 9일까지 제출인 과제였지만 난이도가 어렵진 않아서 빠르게 풀었고 내일부터는 다시 

    SQL 코드 테스트 문제를 풀어보려고 한다.


     

    오늘 저녁 7시부터 1시간동안 튜터님의 데이터 공부법과 분석과 취직 준비에 관한 특강을 수강했는데 

     

    많은 좋은 말씀들이 있었지만 그 중에서도 기억에 남았던 것은

    빅테크 회사들에서 기술 블로그를 참고하는 경우가 많기 때문에 기술 블로그를 잘 작성하라는 부분이었다.

    계속 블로그를 작성하면서 느꼈던 거지만 좀 더 내가 배웠던 것을 체계적으로 잘 정리할 필요가 있겠다고 생각을 했고 해당 부분을 앞으로 블로그 작성하는데 반영해보고자 한다.

     

    그리고 내가 왜 데이터분석가가 되고 싶어하는지 어떤 데이터 분석가가 되고 싶은지를 다시 한 번 잘 정리 한 뒤

    취직하고자하는 도메인을 하루 빨리 결정을 내려서 해당하는 도메인에 대해서 공부를 시작해야겠다는 생각이 들었다. 

    1월 내에는 도메인 결정을 내려볼 계획이다.

    '내일배움캠프(데이터 분석 부트캠프 1기) > TIL & WIL' 카테고리의 다른 글

    <WIL> 2024년 1월 1주차 회고  (0) 2024.01.05
    <TIL> 2024-01-05  (0) 2024.01.05
    <TIL> 2024-01-03  (1) 2024.01.03
    <TIL> 2024-01-02  (1) 2024.01.02
    <WIL> 2023년 12월 4주차 회고  (1) 2023.12.29
Designed by Tistory.