rubus0304 님의 블로그

[데이터분석 3주차] 관심 데이터직무 넓히기 & 파이썬 문법복습 본문

Data Analyst/Weekly

[데이터분석 3주차] 관심 데이터직무 넓히기 & 파이썬 문법복습

rubus0304 2024. 10. 20. 18:28

1. 데이터활용직무

 

1) 글로벌마케팅 데이터분석 직무 (2주차 분석참고)

 

2) 프로덕트 분석가 (Product Analystics)

  - 회사의 제품 데이터를 분석

  - 앱 서비스 또는 웹 서비스에서 발생하는 유저 행동로그 데이터를 분석

    : 고객이 제품을 어떻게 사용하고 있을까?

    : 퍼널별로 얼마나 체류할까? 퍼널 분석

    : 어떻게 제품을 사용할까?

    : 제품 개선을 위한 유저 활동 데이터 분석

    : 코호트 분석 

    : 어떤 지표를 볼 지 정하고, 그 지표를 보기 위한 데이터 로깅

    : 제품 AB Test

    : UX 관점의 데이터를 파악

    : 제품 KPI 모니터링  

       (유저 리텐션(Retention): 서비스를 계속 사용하는지)

       (퍼널 별 전환율)

       (특정 기능, 버튼 사용률)

       (페이지별 체류 시간)

  - 업무예시

    : 새로운 기능을 성공을 의미하는 Metric 정의

    : 새로운 Feature(기능) 출시 후, Metric 모니터링 및 해석

    : 어떤 고객들이 리텐션이 높은가?

  - 프로젝트 매니저 직군이 데이터를 자주 보다가 프로덕트 분석가가 되는 경우 꽤 존재.

  - 주로 Google Analytics, Google Tag Manager, Amplitude 등의 도구를 다루며 채용 공고의 필요역량 중 SQL, 논리적 사고가 자주 나옴. 

 

기업 업무
쿠팡
(경력 5~17년)

주요업무

Data Analyst 로서 쿠팡 사용자들에게 세계 최상급의 고객 경험을 제공하기 위해 물류운용 측면에서의 보고와 인사이트 관련 업무를 담당합니다. 수백만명의 고객이 쿠팡을 사용하며 이 과정에서 수십억 개의 데이터 포인트가 생성됩니다. 팀은 이와 같은 데이터를 취합하여 적용 가능한 인사이트 생성, 복잡한 비즈니스 관련 질문에 대한 답 모색, 쿠팡 고객들에 대한 이해도 향상 등의 업무를 진행합니다.

• 최고의 쇼핑경험을 제공하기 위해 새로운 고객경험 지표와 인사이트 제시 및 생성
• 데이터를 기반으로 한 결정을 내리기 위해 PM(Product Manager), 디자이너, 프로그램 매니저, 엔지니어, 이해관계자들과 협업
• 주, 월, 분기별 비즈니스 보고서 생성 및 관리, 여러 팀들과 협력하여 높은 수준의 인사이트를 포착하고 이를 주요 이해관계자와 경영진에게 제시
• 사고 리더십을 발휘하고 이커머스와 물류 서비스 분석 분야의 전문가로서 활동

자격요건

•SQL에 능숙하고 데이터 분석 분야에 5년 이상 경력이 있는 분
•통계학, 산업공학 관련 학사/ 석사 학위를 보유하거나 그와 동등한 경력을 보유한 분
•데이터와 인사이트를 분석하여 명확하고 실행 가능한 계획을 제시한 경험이 있는 분
•Hadoop, Spark, Presto, Airflow와 같은 빅데이터 기술을 사용한 경험이 있는 분
•Power BI, Tableau 등과 같은 BI 툴을 사용한 경험이 있는 분
•복잡한 분석 내용을 글과 의사소통을 통해 간결하고 명료하게 전달할 수 있는 능력을 보유한 분

https://www.wanted.co.kr/wd/223481

 

3) CRM 마케터 (Customer Relationship Management) 

  - 고객과 커뮤니케이션하고 분석

  - 유저 Life Cycle 관리

    : AARRR 퍼널 별 KPI를 달성하기 위한 마케팅 전략 수립

    : 마케팅 KPI 모니터링

      (유저 리텐션 (Retention): 서비스를 계속 사용하는 자 )

      (LTV (Life Time Value): 고객 생애 가치)

    : (고객 등급이 있는 경우) 고객 등급별 분석

    : (구독 모델이 존재하는 경우) 구독 모델 기획 및 분석

    : 고객이 계속 제품을 사용하도록 문자, 이메일, Push Notification 기획 및 분석

    : 쿠폰 마케팅 (어떤 금액대의 쿠폰을 누구에게 보낼 것인가)

    : 고객 Segment 분석

    : AB Test 

  - 고객 커뮤니케이션 툴인 Braze 사용하며, Google Analytics, Amplitude 등 활용하며 SQL을 자주 활용함

 

4) 그로스 해킹 - 양승화 (책)

  - 프로덕트 분석가 + 퍼포먼스 마케터 + CRM 마케터 + 비즈니스 분석가의 역할을 넓게 하는 Role 

  - Growth를 위한 데이터 분석

    : 마케팅 -> AARRR 퍼널 분석

    : 퍼포먼스 마케팅

    : CRM 마케팅

    : KPI 수립 및 관리

    : AB Test

  - 제품을 성장시키기 위한 지표를 정하고, 그 지표를 위한 것들을 수단 가리지 않고 진행하고, 액션하는 직군

  - 요새는 그로스 해커보다 그로스 마케터/ 그로스 데이터 분석가 채용 공고가 존재

  - Amplitude, Mixpanel, Segment, Tag Manager, SQL 등을 활용

 

https://1point.kr/blog/insights/growth-performance-difference/

 

퍼포먼스 마케팅 vs 그로스 마케팅, 차이점과 적용 시기 - 원포인트 블로그

그로스 마케팅과 퍼포먼스 마케팅의 차이를 이해하고, 각각의 전략을 효과적으로 활용하는 방법을 알아보세요.

1point.kr

 

 

2.파이썬 문법정리

문법 내용
1.변수 선언과 자료형
변수 선언 a = 3 # 3을 a에 넣는다.
print(a)

b = a # a에 들어 있는 값인 3을 b에 넣는다.
print(b)

a = 5 # a에 5라는 새로운 값을 넣는다.
print(a, b) # 5 3
숫자형
자료형
1) 사칙연산 (+,-,*,/)

ex)
a=7, b=2
a+b =c
print (c)    --> 9


a+b # 9
a-b # 5
a*b # 14
a/b # 3.5
 
2) 변수에 저장된 값 연산  후 다시 그 값을 같은 변수에 저장가능

a=5
a= a+3    ( a+= 3으로 줄여쓸 수도 있음!)
print(a)   -->8

3) 나눗셈의 나머지

a//b # 3 (몫)
a%b # 1 (나머지)
a**b # 49 (거듭제곱)
  
Bool 자료형 참/거짓

x= True (참)
y=False (거짓)

(에러)
z= rue  (x) * 소문자로 쓰면 자료형으로 인식하지 않고 변수명으로 생각해 에러남.
True = 1 (x) *True/ False 는 변수명으로 쓸 수 없음.


보통 '비교연산자'의 결과로 나타내기 위해 쓰임.

4 > 2 # True 크다
5 < 1 # False 작다
6 >= 5 # True 크거나 같다
4 <= 4 # True 작거나 같다
3 == 5 # False 같다
4 != 7 # True 같지 않다


불 자료형에는 논리연산자를 이용할 수 있다.

a = 4 > 2 # True
not a # False NOT 연산자로 참을 거짓으로, 거짓을 참으로 바꿔준다.
a and b # False AND 연산자로 모두 참이어야 참을 반환한다.
a or b # True OR 연산자로 둘 중 하나만 참이면 참이다.


(연습문제)
숫자들의 평균 구하기

a = 24
b = 16
c = 26

print((a+b+c)/3)
2.문자열 다루기
문자열 1) 문자열 기초

파이썬에서는 '글'도 데이터로 사용할 수 있는데요, 이것을 '문자열'이라고 합니다.

작은 따옴표 또는 큰 따옴표. 둘 다 같아요!
a = "aa"
b = 'aa'

2) 따옴표로 감싸지 않으면 변수이름을 뜻함. (꼭 구분해서 써야함!)

a = 1
b = "a"
c = a
print(a, b, c)  --> 1 "a" 1

따라서, 이렇게 다양한 방법으로 만들 수 있기 때문에, 문자열에 따옴표를 포함해야할 때 쓰면 편해요

ex) print("I'm happy :)")
문자열 연산 문자열 간의 더하기는 두 문자열을 이어붙인 문자열을 반환합니다.

first_name = "Harry"
last_name = "Potter"
first_name + last_name     # HarryPotter
first_name + " " + last_name      # Harry Potter

a = "3"
b = "5"
a + b       # 35

문자열과 정수를 더하면 에러!

a = "3"
a + 5        #  ERROR  (문자열과 숫자형은 더할 수 없어서 에러!)


문자열의 길이는 len( ) 함수

 
print(len("abcde"))     # 5
print(len("Hello, Sparta!"))     # 14
print(len("안녕하세요."))      # 6


그 외에도 다양한 기능
이렇게 특정 자료형 뒤에 . 을 붙이고 쓰는 내장 함수들을 '메소드(method)'


1) 모든 알파벳을 대문자/소문자로 바꾸기

sentence = 'Python is FUN!'
sentence.upper()    # PYTHON IS FUN!
sentence.lower()      # python is fun!


2) 특정 문자를 기준으로 문자열을 나누기

# 이메일 주소에서 도메인 'gmail'만 추출하기

myemail = 'test@gmail.com'

result = myemail.split('@')      # ['test','gmail.com']   (뒤에 배울 '리스트'라는 자료형이에요 :))

result[0]    # test (리스트의 첫번째 요소)
result[1]    # gmail.com (리스트의 두 번째 요소

result2 = result[1].split('.')     # ['gmail','com']

result2[0] # gmail    -> 우리가 알고 싶었던 것
result2[1] # com

# 한 줄로 한 번에!

myemail.split('@')[1].split('.')[0]


3) 특정 문자를 다른 문자로 바꾸기

txt = '서울시-마포구-망원동'
print(txt.replace('-', '>'))       # '서울시>마포구>망원동'

인덱싱과 슬라이싱 1) 문자열은 '문자들의 모임'이기 때문에 그 일부를 따로 떼어 부르는 방법이 있음.
한 글자 씩 부를 때는 몇 번째인지 '인덱스'를 넣어 불러서 인덱싱이라고 합니다.

f="abcdefghijklmnopqrstuvwxyz"
f[1]     # b       (파이썬은 숫자를 0부터 셉니다)

2) 문자열의 일부를 잘라낼 때는 슬라이싱

f[4:15]     # efghijklmno f[4]부터 f[15] 전까지, 총 15-4=11개!

f[8:]      # ijklmnopqrstuvwxyz f[8]부터 끝까지앞의 8개 빼고!

f[:7]       # abcdefg 시작부터 f[7] 전까지, 앞의 7개!

f[:]       # abcdefghijklmnopqrstuvwxyz 처음부터 끝까지


3)특정 문자열로 자르고 싶을 때! split('문자열') 을 활용

myemail = 'abc@sparta.co'

domain = myemail.split('@')[1].split('.')[0]

print(domain)


(연습문제)
Q. 문자열의 앞의 반만 출력하기
"sparta" 의 앞의 3글자인 "spa" 만 출력

text = "sparta"
print(text[:3])

Q. 전화번호의 지역번호 출력하기
phone = "02-123-1234"

phone = "02-123-1234"
print(phone.split("-")[0])
3. 리스트와 딕셔너리
리스트 기초 1) 순서가 있는, 다른 자료형들의 모임!

a = [1, 5, 2]
b = [3, "a", 6, 1]
c = []
d = list()
e = [1, 2, 4, [2, 3, 4]]


2) 리스트의 길이도 len() 함수를 사용해서 잴 수 있어요.

a = [1, 5, 2]
print(len(a)) # 3

b = [1, 3, [2, 0], 1]
print(len(b)) # 4


3) 순서가 있기 때문에, 문자열에서처럼 인덱싱과 슬라이싱을 사용할 수 있음

a = [1, 3, 2, 4]

print(a[3])   # 4
print(a[1:3])   # [3, 2]
print(a[-1])    # 4 (맨 마지막 것)


4) 리스트의 요소가 리스트라면? 중첩해서!

a = [1, 2, [2, 3], 0]

print(a[3])      # [2, 3]
print(a[3][0])      # 2


리스트 더 많은 기능들 1) 덧붙이기

a = [1, 2, 3]
a.append(5)
print(a) # [1, 2, 3, 5]

a.append([1, 2])
print(a) # [1, 2, 3, 5, [1, 2]]

# 더하기 연산과 비교!
+= [2, 7]
print(a) # [1, 2, 3, 5, [1, 2], 2, 7]


2) 정렬하기

a = [2, 5, 3]
a.sort()

print(a)     # [2, 3, 5]

a.sort (reverse=True)

print(a)       # [5, 3, 2]


3) 요소가 리스트 안에 있는지 알아보기

a = [2, 1, 4, "2", 6]

print(1 in a)      # True
print("1" in a)      # False
print(0 not in a)      # True

딕셔너리 기초 1) 딕셔너리는 키(key)와 밸류(value)의 쌍으로 이루어진 자료의 모임입니다.
영한사전에서 영어 단어를 검색하면 한국어 뜻이 나오는 것처럼요!

person = {"name":"Bob", "age": 21}
print(person["name"])

2) 딕셔너리를 만드는 데는 여러가지 방법을 쓸 수 있습니다.

a = {"one":1, "two":2}

# 빈 딕셔너리 만들기
a = {}
a = dict()


3) 딕셔너리의 요소에는 순서가 없음 (인덱싱을 사용불가)

person = {"name":"Bob", "age": 21}

print(person[0]) # 0이라는 key가 없으므로 KeyError 발생!


4) 딕셔너리의 값을 업데이트하거나 새로운 쌍의 자료를 넣을 수 있습니다.

person = {"name":"Bob", "age": 21}

person["name"] = "Robert"
print(person) # {'name': 'Robert', 'age': 21}

person["height"] = 174.8
print(person) # {'name': 'Robert', 'age': 21, 'height': 174.8}


5) 딕셔너리의 밸류로는 아무 자료형이나 쓸 수 있어요. 다른 딕셔너리를 넣을 수도 있죠!

person = {"name":"Alice", "age": 16, "scores": {"math": 81, "science": 92, "Korean": 84}}

print(person["scores"]) # {'math': 81, 'science': 92, 'Korean': 84}
print(person["scores"]["science"]) # 92


딕셔너리의 더 많은 기능들 딕셔너리 안에 해당 키가 존재하는지 알고 싶을 때는 in 을 사용합니다.

person = {"name":"Bob", "age": 21}

print("name" in person) # True
print("email" in person) # False
print("phone" not in person) # True
 리스트와 딕셔너리의 조합 딕셔너리는 리스트와 함께 쓰여 자료를 정리하는 데 쓰일 수 있습니다.

people = [{'name': 'bob', 'age': 20}, {'name': 'carry', 'age': 38}]

# people[0]['name']의 값은? 'bob'
# people[1]['name']의 값은? 'carry'

person = {'name': 'john', 'age': 7}
people.append(person)

# people의 값은?   [{'name':'bob','age':20}, {'name':'carry','age':38}, {'name':'john','age':7}]
# people[2]['name']의 값은?    'john'


(연습문제)

Q. 딕셔너리에서 원하는 정보를 찾아보기
[코드스니펫] - 딕셔너리 퀴즈


people = [
{'name': 'bob', 'age': 20, 'score':{'math':90,'science':70}},
{'name': 'carry', 'age': 38, 'score':{'math':40,'science':72}},
{'name': 'smith', 'age': 28, 'score':{'math':80,'science':90}},
{'name': 'john', 'age': 34, 'score':{'math':75,'science':100}}
]

smith의 science 점수를 출력해보세요

print(people[3]['score']['science'])
4. 조건문
if문 1) 조건을 만족했을 때만 특정 코드를 실행하도록 하는 문법입니다.

money = 5000
if money > 3800:
    print("택시 타자!")


2) 파이썬에서는 어디까지 구문에 포함되는지를 들여쓰기로 구분하기 때문에 아주 중요합니다.
-> 조건에는 불 자료형이 들어갑니다. money > 3800은 True

money = 5000
if money > 3800:
   print("택시 타자!")

else/
elif
1) 조건을 만족하지 않을 때 다른 코드를 실행하고 싶을 때 쓰는 문법입니다.

money = 2000
if money > 3800:
print("택시 타자!")
else:
print("걸어가자...")

2) 다양한 조건을 판단할 때는 elif 를 쓰면 좋아요!

age = 27
if age < 20:
print("청소년입니다.")
elif age < 65:
print("성인입니다.")
else:
print("무료로 이용하세요!")

5. 반복문
for문 0부터 9까지 숫자를 출력해볼까요?

print(0)
print(1)
print(2)
...
print(9)

파이썬에서는 아래처럼 쓰는 것이 더 자연스럽습니다.

fruits = ['사과', '배', '감', '귤']
for fruit in fruits:
print(fruit)


(연습문제1)- Q. 사람의 나이 출력하기

people = [
{'name': 'bob', 'age': 20},
{'name': 'carry', 'age': 38},
{'name': 'john', 'age': 7},
{'name': 'smith', 'age': 17},
{'name': 'ben', 'age': 27},
{'name': 'bobby', 'age': 57},
{'name': 'red', 'age': 32},
{'name': 'queen', 'age': 25}
]

이 리스트에서 나이가 20보다 큰 사람만 출력합니다

for person in people:
if person['age'] > 20:

print(person['name'])


(연습문제2)for 문 - enumerate, break

fruits = ['사과', '배', '감', '귤','귤','수박','참외','감자','배','홍시','참외','오렌지']

for i, fruit in enumerate(fruits):
print(i,fruit)

예를 들어 앞에 5개만 출력해보고 싶다면?

for i, fruit in enumerate(fruits):
     print(i, fruit)
     if i == 4:
         break

5-1. 반복문 연습문제
  Q1. 리스트에서 짝수만 출력하는 함수 만들기
- 짝수 출력하기

num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]

이 리스트에서 짝수인 요소만 출력해봅시다.

num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]
for num in num_list:
if num % 2 == 0:

print(num)


Q2. 리스트에서 짝수의 개수를 출력하기

num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]

num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]
count = 0
for num in num_list:
if num % 2 == 0:
count += 1

print(count)



Q. 리스트 안에 있는 모든 숫자 더하기

num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]

result = 0
for num in num_list:
result += num
print(result)

print(sum(a_list))


Q. 리스트 안에 있는 자연수 중 가장 큰 숫자 구하기

num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]

max_value = 0
for num in num_list:
if num > max_value:
max_value = num

print(max_value)

print(max(a_list))
6. 함수
함수 사용 방법 함수는 반복적으로 사용하는 코드들에 이름을 붙여놓은 것입니다.

def hello():
print("안녕!")
print("또 만나요!")


hello()
hello()


조건문에 넣을 값을 바꿔가면서 결과를 확인할 때 쓰면 편합니다.

def bus_rate(age):
      if age > 65:
         print("무료로 이용하세요")
      elif age > 20:
         print("성인입니다.")
      else:
         print("청소년입니다")

bus_rate(27)
bus_rate(10)
bus_rate(72)


단순한 출력 뿐만 아니라 결과 값을 돌려주도록 함수를 만들 수도 있어요!

def bus_fee(age):
      if age > 65:
           return 0
      elif age > 20:
           return 1200
      else:
           return 0

money = bus_fee(28)
print(money)


Q. 주민등록번호를 입력받아 성별을 출력하는 함수 만들기

def check_gender(pin):
print('')

my_pin = '200101-3012345'
check_gender(my_pin)


주민등록번호 뒷자리의 맨 첫 번째 숫자가 1, 3 등 홀수이면 남성, 2, 4 등 짝수이면 여성이죠?

힌트! → "2"라는 문자열을 숫자로 바꾸려면? int("2") 이렇게, int로 감싸주세요!

def check_gender(pin):
      num = int(pin.split('-')[1][0])
      if num % 2 == 0:
             print('여성')
      else:
             print('남성')

my_pin = "200101-3012345"
check_gender(my_pin)
7.튜플,집합
튜플 튜플은 리스트와 비슷하지만 불변 인 자료형 입니다. 마찬가지로 순서가 존재하죠!

a = (1,2,3)
print(a[0])

예를 들어 아래와 같은 작업이 불가합니다!

a = (1,2,3)
a[0] = 99

주로 사용은 아래와 같이, 딕셔너리 대신 리스트와 튜플로 딕셔너리 '비슷하게' 만들어
사용해야 할 때 많이 쓰입니다!


a_dict = [('bob','24'),('john','29'),('smith','30')]

집합 (set) 집합은 말 그대로 '집합'을 구현하는 방법! 좋은점: 중복이 제거 됩니다

a = [1,2,3,4,5,3,4,2,1,2,4,2,3,1,4,1,5,1]
a_set = set(a)
print(a_set)

교집합 / 합집합 / 차집합도 구할 수 있어요

a = ['사과','감','수박','참외','딸기']
b = ['사과','멜론','청포도','토마토','참외']

print(a & b) # 교집합
print(a | b) # 합집합



(연습문제) 구글링문제 - Q. A가 들은 수업 중, B가 듣지 않은 수업을 찾아보기
- AB수업 문제

student_a = ['물리2','국어','수학1','음악','화학1','화학2','체육']
student_b = ['물리1','수학1','미술','화학2','체육']

a와 b의 '차집합' 구하는 방법을 구글링해보세요!

set_a = set(student_a)
set_b = set(student_b)

print(set_a-set_b)



8.f-string
변수로 더 직관적인 문자열 만들기 예를 들어 아래 for문을 살펴보겠습니다.
- 점수 모음

scores = [
{'name':'영수','score':70},
{'name':'영희','score':65},
{'name':'기찬','score':75},
{'name':'희수','score':23},
{'name':'서경','score':99},
{'name':'미주','score':100},
{'name':'병태','score':32}
]

이름과 점수를 모두 출력

for s in scores:
name = s['name']
score = str(s['score'])
print(name,score)

아래와 같이 출력해보면 어떨까요?

for s in scores:
name = s['name']
score = str(s['score'])
print(name+'는 '+score+'점 입니다')


f-stirng을 이용하면 훨씬 간단

for s in scores:
     name = s['name']
     score = str(s['score'])
     print(f'{name}은 {score}점입니다')

9.예외처리
try-except문 에러가 있어도 건너뛰게 할 수 있는 방법
- try-except 예제

people = [
{'name': 'bob', 'age': 20},
{'name': 'carry', 'age': 38},
{'name': 'john', 'age': 7},
{'name': 'smith', 'age': 17},
{'name': 'ben', 'age': 27},
{'name': 'bobby', 'age': 57},
{'name': 'red', 'age': 32},
{'name': 'queen', 'age': 25}
]

실제 프로젝트 남용하는 것은 금물! 어디서 에러가 났는지 알 수 없어요 ?


다음과 같이 20세 보다 큰 사람만 출력한다고 해봅시다.
people = [
{'name': 'bob', 'age': 20},
{'name': 'carry', 'age': 38},
{'name': 'john', 'age': 7},
{'name': 'smith', 'age': 17},
{'name': 'ben', 'age': 27},
{'name': 'bobby', 'age': 57},
{'name': 'red', 'age': 32},
{'name': 'queen', 'age': 25}
]

for person in people:
      if person['age'] > 20:
         print (person['name'])

그런데 만약, bobby가 age를 갖고 있지 않다면? - 데이터 하나가 잘못 들어간거죠!


people = [
{'name': 'bob', 'age': 20},
{'name': 'carry', 'age': 38},
{'name': 'john', 'age': 7},
{'name': 'smith', 'age': 17},
{'name': 'ben', 'age': 27},
{'name': 'bobby'},
{'name': 'red', 'age': 32},
{'name': 'queen', 'age': 25}
]

for person in people:
      if person['age'] > 20:
         print (person['name'])

그 때 아래와 같이 try except 구문을 이용하면 에러를 넘길 수 있답니다.

for person in people:
      try:
           if person['age'] > 20:
              print (person['name'])
      except:
           name = person['name']
           print(f'{name} - 에러입니다')

10.파일 불러오기
 여러개 파일로 분리하려면 1) main_test.py

from main_func import *
say_hi()


2) main_func.py

def say_hi():
print('안녕!')

11.한줄의 마법
if문-삼항연산자 만약 조건에 따라 다른 값을 변수에 저장하고 싶다면?

num = 3

if num%2 == 0:
     result = "짝수"
else:
      result = "홀수"

print(f"{num}은 {result}입니다.")


이것을 한 줄에 적는 것이 파이썬의 유일한 삼항연산자인 조건식입니다

num = 3
result = "짝수" if num%2 == 0 else "홀수"
print(f"{num}은 {result}입니다.")

(참일 때 값) if (조건) else (거짓일 때 값) 으로 항이 3개라 삼항 연산자입니다 ?



for문 (한방에) a_list 의 각 요소에 2를 곱한 새로운 리스트를 만들고 싶다면?

a_list = [1, 3, 2, 5, 1, 2]

b_list = []
for a in a_list:
     b_list.append(a*2)

print(b_list)


이것을 한 번에 쓸 수 있는 방법이 있죠!

a_list = [1, 3, 2, 5, 1, 2]
b_list = [a*2 for a in a_list]
print(b_list)

12. map,filter,lambda식
map   map - 리스트의 모든 원소를 조작하기
- 리스트조작 연습
people = [
{'name': 'bob', 'age': 20},
{'name': 'carry', 'age': 38},
{'name': 'john', 'age': 7},
{'name': 'smith', 'age': 17},
{'name': 'ben', 'age': 27},
{'name': 'bobby', 'age': 57},
{'name': 'red', 'age': 32},
{'name': 'queen', 'age': 25}
]

1. 1차 조작

def check_adult(person):
      if person['age'] > 20:
          return '성인'
else:
          return '청소년'

result = map(check_adult, people)
print(list(result))


2.2차 조작!

def check_adult(person):
       return '성인' if person['age'] > 20 else '청소년'

result = map(check_adult, people)
print(list(result))


3. 3차 조작!

result = map(lambda x: ('성인' if x['age'] > 20 else '청소년'), people)
print(list(result))



 filter - 리스트의 모든 원소 중 특별한 것만 뽑기 map과 아주 유사한데, True인 것들만 뽑기! (map보다 훨씬 쉬워요!)

result = filter(lambda x: x['age'] > 20, people)
print(list(result))
13. 함수 심화
함수의 매개변수 이 내용들은 직접 쓰는 것보단 알고 있으면 내장함수 등을 사용할 때 도큐먼트를 읽는 데 도
이 됩니다!

1.함수에 인수를 넣을 때, 어떤 매개변수에 어떤 값을 넣을지 정해줄 수 있어요. 순서 상관 없음!

def cal(a, b):
      return a + 2 * b

print(cal(3, 5))
print(cal(5, 3))
print(cal(a=3, b=5))
print(cal(b=5, a=3))


2.특정 매개변수에 디폴트 값을 지정해줄 수 있어요.

def cal2(a, b=3):
      return a + 2 * b

print(cal2(4))
print(cal2(4, 2))
print(cal2(a=6))
print(cal2(a=1, b=7))


3.  입력값의 개수를 지정하지 않고 모두 받는 방법!

def call_names(*args):
      for name in args:
           print(f'{name}야 밥먹어라~')

call_names('철수','영수','희재')


이렇게 여러 개의 인수를 하나의 매개변수로 받을 때 관례적으로 args 라는 이름을 사용
합니다. arguments라는 뜻이에요!

4.키워드 인수를 여러 개 받는 방법!

def get_kwargs(**kwargs):
      print(kwargs)

get_kwargs(name='bob')
get_kwargs(name='john', age='27')

14.클래스
 
우선, 클래스를 언제 사용하는지 생각해보시죠!


중앙에서 HP 관리


각 객체가HP관리 (더 자유로움)

클래스의 사용 방법을 눈으로 살펴보겠습니다.

class Monster():
         hp = 100
         alive = True

         def damage(self, attack):
               self.hp = self.hp - attack
               if self.hp < 0:
                  self.alive = False

         def status_check(self):
               if self.alive:
                  print('살아있다')
               else:
                  print('죽었다')

m = Monster()
m.damage(120)

m2 = Monster()
m2.damage(90)

m.status_check()
m2.status_check()

 

 

 

01. SCC 파이썬 소개 및 입문.pdf
10.14MB
02. SCC 파이썬의 뼈대 리스트 튜플 딕셔너리.pdf
0.71MB
03. SCC 파이썬의 근육 조건문 반복문.pdf
0.73MB
04. SCC 파이썬의 몸통 함수.pdf
0.98MB
05. SCC 알면 유용한 파이썬 문법들!.pdf
1.05MB