ASAC 빅데이터 분석가 7기/ASAC 일일 기록

ASAC 빅데이터 분석가 과정 3일차 - 2 (24.12.06)

junslee 2024. 12. 6. 14:45

파이썬(Python)

파이썬 : 프로그램 언어!!! ==> 스크립트 (작성은 편한데, 속도가 이슈!!)

---> Anaconda : 데이터분석... 핸들링... 패키지!!(+ ML/DL

--> pytorch/ TF etc) : 파이썬!!!

파이썬 vs R vs Java -> ML/DL로 인해 파이썬이 굳

배포판!! --> jupyter (코드 + 문서 + 결과)

데이터 분석/ 핸들링 : 그래프/ 문서/ 테이블..

+++ DL 최근 문서들을... 간단하게...(패키지 불러와서)

+++ 패키지나 표본 모델을 만들기 위해서는 파이썬이 필요

 

---> Jupyter / Jpouter... 


Colab

텍스트는 markdown 언어 양식으로 표현

-> markdown 사용법 검색

코드에서 주석은 #

 

python

- or틱하게 처리하자

- block 단위 jupyter notebook 실행

 당분간 실행하고자 하는 코드 덩어리 위주로 실행

 

파이썬 머신러닝 Libraries

Pandas, Numpy, Matplotlib, Scipy

DL - PyTorch, Keras, Tensor Flow

Sciti-learn

 

파이썬의 데이터형식, 반복문/제어문/함수

모듈 -> 함수**  //클래스가 편하면 클래스로!

함수가 메인임

 

Python 기본 Brief     //첫인상

- 변수 네이밍 : PEP8

- 변수 네이밍에는 자유로움 . 하지만 기본적인 규칙은 주수해야 함 

- 첫 문자는 문자, _

- _(언더스코어)로 시작하는 변수명 : 클래스 내부용

- __(언더스코어)2개 __inti__, __add__ 와 같은 의미가 있어 사용 주의

- for, if, else와 같은 예약어는 피하자

- 대문자로 시작 : 클래스 이름 의미

- *들여쓰기 : 4개의 스페이스 or Tab

- *기준 숫자 : 0

- Mutable vs Immutable : 변경가능한 대상 vs 변경불가능한 대상

//리스트, 튜플의 차이점

- For 반복문 : 여러 개를 다루는 데이터타입의 개별 원소를 Rolling 해주는 개념

-->while-->조건 //거의 안씀 But, 코테의 알고리즘 탐색 DFS, BFS 부분에서 사용

 

# 처음에 학습하는 과정에서는 에러의 원인을 정확히 이해하고

    수정방법까지 파악을 하고 넘어가야 함

    에러의 원인을 검색 : 구글링/ stackoverflow/ gpt 등등

단 gpt가 이렇게 고치면 된다고 해요 <-- 이러면 안됨


파이썬 Essential

- 변수 : 값을 저장하기 위한 공간 --> 파이썬의 다양한 자료형&연산자 특징

 

- 제어문 / 반복문 : 상황에 따른 제어 및 단순 반복을 코드로 구현하기에 가장 중심이 됨

 

--> 이 부분이 잘 되어야 데이터 핸들링이 가능 --> 파이썬만의 특징이 있는 for을 잘 이해해야 함

- 함수 / 클래스 : 좀 더 구조적으로 기능 중심으로 단순 반복을 처리하기 위해 --> 일반적인 ML/DL의 기본은 함수 정까지 알아도 되지만 최신의 DL등을 하기 위해서는 클래스까지 알아야 함

 

<변수>

어떠한 값을 대표하는 이름

변수명 = 값 (숫자, 문자, 여러개, 개체 등등)

변수선언 : 항상 왼쪽에 문자로 선언 -> 대입연산자(=)를 통해 값(숫자,문자,객체 등)을 할당한다.

--> 서로 다른 객체들을 서로 "Link 연결" 하는 것 (할당이 아니다)

//변수명으로 사용할 수 없는 예약어들이 존재

변수는 메모리상의 저장 위치 X --> 대입 assignment 하는것

변수에 값 할당 with 연산자

n = n + 1 ---> n +=1   

이게 여러번 하거나 , 많이 반복해야하는 경우들에 있어서는 속도 이슈가 발생할 수 있음

변수에서 값을 할당할 때 : 값을 자기 자신을 갱신할 때 

규칙에 따라서 :+=, -=, *=, /=

==> 효율적인 코드 실행 속도

파이썬만의 특징 중 하나 : 멀티 할당

==> 데이터 분석쪽 보다는 파이썬을 가지고 코테를 할 때 자주 사용

장점 : 코드가 간결

주로 : 코테에서 잘 쓰면 깔끔하게 작성이 된다

예)값을 교환 두 변수의 값을 교환

일반적인 언어들에서는 중간에 매개체

temp = a

a = b 

b = temp

print( a, b)

==> 정렬이라는 알고리즘의 가장 핵심적인 기능 : swap

a , b = b, a

print(a,b)

: swap을 통해 코드가 간결해짐

 

==> 코테에서는 자주 사용되는 패턴!! 코드가 간결!!

정렬쪽이 가장 대표적

단, 데이터 분석이나 모델링쪽은 그닥;;;

 

<자료형>

 

코테에서는 주어진 상황에 대해서 어떠한 Type을 써야 효율적일지 스스로 판단을 해야함

--> 기본적인 기능들에 대한 숙지가 필요함

//자료형 정리해서 기록하자

1) 내가 1개의 값을 대상

---> 값의 종류 : 숫자 (정수,실수, 더 다른 숫자형..)

       문자1 (1개: 영어, 한글, 특수 -....)

       논리값 : True/:False, 0/1

2) 내가 여러개의 값을 대상

---> 값들을 나열 (값,값,값,..)

---> 리스트 : [값,값,값,...] : 파이썬의 가장 대표적인 자료형

                                           수정이 가능함!!(추가, 제거, 등등)

       튜플   : (값,값,값,...) : 한 번 만들면 변경 불가능!!

---> set      : {값,값,값,...} : 중복된 값을 1개로 처리!!

                                        : 유니크한 값들에 체크!!

                                        : 유니크값 체크 코드를 작성 안해도 자료형만 잘 변형해도 됨


---> dict     : {키:값, 키:값, 키:값 ,...} ==> miniDatabase!!

                  : hash 알고리즘이 있는데 ,, pass

                  : 코테에서는 정말로 중요한 역할을 함

                  - 코드가 간결

                  - 원하는 값을 찾는데 Fast!!


ex) 100000 백만개의 값이 있는 것이라고 할께요..

    --> case1) 리스트 : 홍길동?

    --> case2) dict       :홍길동에 대한 주민번호/pin번호 알면

                                   ==> 바로 호출이 가능함

    참고) 리스트에서 원하는 원소를 찾는 시간의 복잡도 : 0(n)

             dict              ,,,                                                    : 0(1)

     HashTable 이런 알고리즘!!!


예) 우리반의 3명의 a,b,c 친구들이 수학시험 봄 : 80,70,95점을 받았습니다.

----> 3명의 총점은 얼마?

80+70+95

-------

a=80

b=70

c=95

total = a+b+c

print(total)


Q) 우리반의 학생이 3명이 아니라 100명으로 늘어나면 어쩔??

student_1=90

student_2=80

student_3=70

...

student_100=99

#장점 : 누가 몇 점인지 바로 체크

#단점 : 아 귀찮음..변수도 너무 많음!!

 

#알고자 하는 것이 : 그냥 반의 전체의 평균/총점/최고점

   ==> 누구인지는 알 필요X

#필요한 것들은 그냥 점수들

scores = [90,80,78,33,44,11,...]  //set는 중복값이 날라가므로 리스트로

#여러개의 값을 모아서 1개의 변수로 심플화

#장점 : 변수가 심플

#단점 : 누가 몇 점인지는 몰라요

 

# 알고자 하는 것이 : 전체 반의 평균도 알고 싶고

                                 누가 몇 점인지도 알고 싶다!!

                                  + 우리반의 1등은 누구지??

# 조건: 우리반에 동명이인은 없다!!

#          홍길동_a, 홍길동_b

scores = { "A":90, "B":88, "C":87, ...}


#현실적으로 코테를 보겠다 : 여러 문제들을 풀어야 함

                                               달달달 해야 함

--> 개발자/연구자  코테 : 2일/3일 전에 책 피고 열심히 달달달

==> 많이 하세요!!


<연산자>

산술 연산자

=,+,-,*,/,//(몫),%(나머지),**(제곱)   #최적화를 위해 몫과 나머지를 잘 사용하자

 

나눗셈에 대한 연산자

1) 그냥 계산

print(5/3)

2) 몫만

print(5//3)

3) 나머지만

print(5%3)

# 코테에서는 이 부분을 잘 해야 함!!

# 데이터 수집/ 처리에서도 중요한 역할을 함

# 예) 987건을 100건 단위로 처리할 때 코드화 할 때 사용을 함!!

# ***규칙화!!!


파이썬에서 공식적으로 만든 FM적인 함수

divmod() 함수

#입력 : 무엇을 무엇으로 나눌지에 대한 정보(기준수,나눌 수)

#기능 : 나눗셈을 해서, 몫, 나머지를 던져줌

#출력 : 입력에 대한 몫, 나머지

ex) divmod(5,3) /튜플인 이유: 변경 불가능 Immutable 

ex) divmod(5,3)[0]   #몫 --> 5//3

ex) divmod(5,3)[1]   #나머지 --> 5%3

# 파이썬의 멀티 할당!!!

q, m = divmod(5,3)

print(q,m)


##파이썬의 대표적인 여러개의 값을 다루는 자료형 : 리스트!!

1) 기본 구조 : [값,값,값,...]

2) 기본 기능 : 값을 추가 (append, insert)

                       --> append : 값을 맨 뒤에 추가!!

                       --> insert    : 중간에 끼어들기!! (어디에, 무엇)

                        : 값을 제거 (pop, remove)

                       --> pop : 위치 중심으로 제거!! (기본 : 맨 뒤)

                       --> remove : 값을 중심으로 제거!!

                                            (중복된 여러개 값이 있을 때, 그 중에서 맨 앞의 1개만 제거)

+++ 파이썬의 잡다한 리스트의 기능!!! 코테를 하려면 파악을 하는게

+++ 파이썬으로 코테를 할 때 : stack /queue 자료형

==> cs 전공에서 전공 1년차 : 자료구조와 알고리즘!! (기본과목 중요!!)

       append, pop

       +++ 탐색의 알고리즘에 주로 잘 표현!! + 최단거리!!

==> 코테를 준비하는 입장에서는 중요한 것 중심 + 잡다한 것은 하면서 추가


ex)

a_list = [10,20,30,40]

a_list 

a_list.append(50)

a_list

# 중요한 부분 : 재할당을 안 했습니다!!!

     ===> 값의 변경이 발생하면, FM적으로 만든 매서들에서는 자동갱신!!

      ===> 재할당을 안해도 됨!!

# a_list = a_list.append(50) 이렇게 작성 안해도 됨!!


#여려개의 값을 모아둔다고...

---> 파이썬은 대충..or 탁하게.. 두리뭉실::

#그냥 여러 자료형을 다 합칠 수 있음!!(장점일 수도 단점일 수도!!)

a_list = [1,3,111,11.3,"hello",[1,2,3]]      #튕길수도있음

a_list  

#자유롭게 핸들링 해보자

a_list.append(100)

a_list

 

a_list. insert(2,"a")

a_list

 

#제거

a_list.pop()    #맨 뒤의 값 제거

a_list

 

a_list.pop(0)    #맨 앞의 값 제거

a_list

 

a_list.append(3)

a_list.append(3)

a_list.insert(4,3)

a_list

 

a_list.remove(3)

a_list

--> remove를 할 때에는 모든 값을 싹 지우는 것은 아님!!

    맨 앞의 1개만 지워짐

#코테 풀 때 : 중복된 것이 있는지 없는지에 따라서 remove를 쓸 때 주의!!

 

#여러개의 값들을 나열 --> 값의 접근

==> 몇 번째 나와!!(위치 정보!!)

    순방향 : 0, 양의 정수

    역방향 : 음의 정수 -1, -2

==> 정수인덱스!!

 

# 하나의 값을 가지고 올지 vs 여러개의 값을 규칙!!

==> 인덱스 자리에 : 정수인덱스 vs 슬라이싱

 

# 제일 중요한 점 : 기준은 0 !!!

a_list

a_list[0]

a_list

a_list[1]

a_list[-1]     #맨 뒤의 값

 

# 예 : 앞의 3개 값들아 나와보세요!!

a_list[0], a_list[1], a_list[2]


**슬라이싱

alist[0:3]  #인덱스 자리에 슬라이싱 : 규칙이 여러개!!

# 슬라이싱에 대한 룰 : 정수인덱스 자리에서 사용!!

--> 시작점 : 끝점(빠짐!!) : 간격

==> 여러개의 값들을 규칙적으로 접근할 때 사용

a_list[1:5:2]

 

# 참고) 슬라이싱을 활용해서 자기 자신을 표현

a_list[::]

 

# 참고) 순서를 뒤집어서 맨 뒤를 맨 앞으로 불러오려면

a_list[::-1]

 

# 참고) 여러개인데... 규칙 없이 그냥 나열하는 것은 어떨까?

a_list[[1,3,4]]   <-- ERROR!!

----> numpy 패키지의 array 자료형 : 이건 됨!!

 

# 리스트에 대해서 간단히 정리!!

# 리스트 구조 : [값,값,...]

# 값을 접근한는 방식 : 정수 인덱스(1개) [순방향, 역방향]

#                                   여러개 규칙 : 슬라이싱!!

#                                   여러개 규칙이 없을 때 : 우회 방법

# 기본적인 기능 (메서드) : 추가(append, insert)

#                                         제거 (pop, remove)

+++ 리스트에서 공식적인 변경에 대한 메서드를 활용하면

        메모리상에서 바로 변경이 이루어짐

        ==> 재할당을 안 해도 변경이 적용이 됨

+++ 코테에서는 잡다한 기능을 알아야 편하다


<튜플>

Tuple : 리스트와 아주 유사함

==> 조작이 불가능함!!(추가, 제거 X)

==> 그 외의 값에 대한 접근/ 처리 등은 리스트와 동일함!!

+++ 형을 리스트로 변경!!

a_tuple = (1,2,3,4,"hello",100,100)

a_tuple[0]

a_tuple[-2]

a_tuple[:3]

a_tuple.append(100)    <-- ERROR

t = list(a_tuple)

t

 

t.append(100)

t

*** 자료형들에 대한 특징을 정확하게 인지를 하고

     필요에 따라서 왔따 갔다 하면 됨!!

==> 코테를 하실 때에는 유연하게 생각을 해야 함!!

# 값 종류 : 문자/ 문자열

1개 : 문자

여러개 : 문자열

파이썬에 사용하는 표기 양식 : " ", ' ', """ """, ''' '''

==> 왜 굳이 이렇게 다양하게 있을까?? 구별자가 문자열 구별자와 진짜 표시

       다양한 상황에 편하게 사용하기 위해서 다양하게 세팅!! 문장부호와 구별!!

"hello"

'hello'

"""hello"""

'''hello'''

 

--> 긴문장, 책, 도서관 코드화 하면

==> 파이썬의 문자열 구분자와 문장부호와 충돌!!

예)탐은 "나는 집에 가요"라고 말했다.

'탐은 "나는 집에 가요"라고 말했다.' (O)

"""탐은 "나는 집에 가요"라고 말했다."""

"탐은 \"나는 집에 가요\"라고 말했다."

# 나중에 문자열을 좀 더 정확하게 표현하고, 규칙화!!

==> 정규식!!

==> 자연어 처리/ 언어 모델쪽 : 문자열 처리는 피할 수 없음

                                                   규칙 기반의 정규식을 사용하면서 해야함

정해진 룰 : gpt 같은 것으로 질의 하는 것도 방법임!!

                100퍼센트는 안되요!!

(나중에 코테 기출문제 풀 때 이야기를 다시 하겠습니다!!)


#참고 

a=10

b=20

a+b

 

a="hi"

b="hello"

a+b

 

a=[1,2,3]

b=[10,20,30]

a+b

 

"1" + '3'

int("1")+'3'     <-- TypeError

==> 요점은 자료형을 정확히 파악을 하고 연산자를 사용해야함!!

++ 여러개의 값을 다루지만 약간 다른 스타일 : Dict

==> 파이썬으로 코테를 할 때 : 유용한 자료형

==> 기본 틀 : 여러개의 값을 모아둠

                       (키:값) 쌍 중심으로 모아둔다

      {키:값, 키:값, 키:값,...}

==> 미니데이터베이스!!

a_list = [1234, 5678]

a_list

 

a_dict = {"a":1234, "b":5678}

a_dict

 

a_list[0]

a_dict[0]     <-- KeyError 

a_dict["a"]     # dict은 키값 중심으로!!

 

a_list

type(a_list)

type(a_dict)

 

# dict 정보 구성 : 키, 값

==> 키 값들만 보자 : keys

       값들만 보자 : values

a_dict.keys()

a_dict.values()

 

++dict에서 한 번 쌍으로 다 같이 돌리고 싶다!!

dict.item() 메서드 + for

list : enumerate()함수+ for : 정수인덱스 + 값

==> for문 할 때 다시 보도록 하겠습니다!!

 

참고) set

{1,1,1,1,2,2,2,2,3,3,3,3,2,2}

[ 1,1,1,1,2,2,2,2,3,3,3,3,2,2]

set([ 1,1,1,1,2,2,2,2,3,3,3,3,2,2])

list( set([ 1,1,1,1,2,2,2,2,3,3,3,3,2,2]))    #set을 list로

 

a_set = {1,1,1,1,2,2,2,2,3,3,3,3,2,2}

a_set

a_set[0]    <-- TypeError

list(a_set)[0]

 

#### 여기까지 기본적인 파이썬의 여러가지 자료형을 간단히!!!

==> 1개 vs 여러개 값

      : 리스트(정수인덱스, 슬라이싱) ~~~~ 튜플!!

      : 문자열

      : Dict (키:값)

      : set(집합 : 중복을 제거를 함)

---> 코테에서는 여러 자료형을 잘 왔다 갔다 해야함

         잡다한 기능도 체크!!


코드 흐름 작성

규칙

**제어문 if 

**반복문 for, while

 

<조건문>

IF문

if, elif, else

 

조건문 : if

==> 수학에서의 분할의 개념으로 겹치지 않고 & 전체 커버할 수 있는

       명료한 조건을 작성을 해야 함

ex) 양수/ 음수 판단

a = 10

if a>0 :

    # 위의 조건이 만족할 때 뭐할지를 기술!! : tab 들여쓰기로

    print("양수입니다.")

else:

    print("0또는 음수입니다.")

 

a = -10

if a>0 :

    # 위의 조건이 만족할 때 뭐할지를 기술!! : tab 들여쓰기로

    print("양수입니다.")

elif a<0 :

    print("음수입니다.")

else:

    print("0입니다.")

 

a = -10

if a>0 :

    # 위의 조건이 만족할 때 뭐할지를 기술!! : tab 들여쓰기로

    print("양수입니다.")

elif a<0 :

    print("음수입니다.")

elif a==0:

    print("0입니다.")

else:

    print("이상한 값입니다.")

 

a = -10

if a>0 :

    # 위의 조건이 만족할 때 뭐할지를 기술!! : tab 들여쓰기로

    print("양수입니다.")

elif a<0 :

    print("음수입니다.")

elif a==0:

    print("0입니다.")

else:                                           <-- SyntaxError

 

a = -10

if a>0 :

    # 위의 조건이 만족할 때 뭐할지를 기술!! : tab 들여쓰기로

    print("양수입니다.")

elif a<0 :

    print("음수입니다.")

elif a==0:

    print("0입니다.")

else:

   pass                #일반적인 코드 작성에서는 else를 쓰시는 것을 추천

#코테에서는 이상한 케이스가 없어요.. 미리 설명하기에 else 안쓰는 경우가 많다


<반복문>

for

파이썬에서 for문!!

===> 여러개의 값들을 롤링해주는 역할!!

# 상황 : 1부터 9까지 출력하세요...

print(1)

print(2)

print(3)

print(4)

print(5)

print(6)

print(7)

print(8)

print(9)

==> ctrl + c/v : 반복이 된다

                      : 무엇이 고정이 되어있고, 무엇이 가변적으로 바뀌는지!!

 

print(i)      # i값이 1~~~9까지 바뀌면 됨!!

 

for i in [1,2,3,4,5,6,7,8,9]:

    print(i)

 

a_list = [1,2,3,4,5,6,7,8,9]

for i in a_list:

    print(i)

 

참고) 필요한 여러 개의 값들이 숫자들이다

==> 많이 사용될 것 같으니 파이썬 range(시작점,끝점,간격)

    : 연속되거나 규칙있는 여러개의 숫자들이 필요!! range

 

for i in range(1,10,1): # [1,2,3,3,4,5,6,7,8,9]

    print(i)

 

range(1,10,1)

#range(1,2,3,4,5,6,7,8,9)

 

for i in range(1,10,2):

    print(i)

 

for i in (1,3,5,6):

    print(i)

 

a_list = ["a","b", "c", "AA", "bb", 10,20,30]

a_list

 

# a_list에 있는 원소들 하나씩 한 줄에 출력해줘!!

print(a_list[0])

print(a_list[1])

print(a_list[2])

print(a_list[3])

print(a_list[4])

print(a_list[5])

print(a_list[6])

print(a_list[7])

 

# 수열의 일반항 : n번째 항의 규칙!!

# 일에 대한 일반화 : print(a_list[i]) : i번째 원소를 출력

# 0~7번째까지

# 리스트업 [0,1,2,3,4,5,6,7]

# range(0,7+1,1)

 

for i in [0,1,2,3,4,5,6,7]:

    print(a_list[i])

 

for i in range(0,8,1):

    print(a_list[i])

# len 파이썬의 함수 : 여러개의 갯수를 리턴해주는 함수

len(a_list)

 

for i in range(0, len(a_list),1):

    print(a_list[i])

 

----> 일반적인 언어들의 접근 방식!!

파이썬 for: 값 자체를 롤링하는 친구!!

a_list

for i in a_list:

    print(i)

 

***중요!!

파이썬으로 for문을 돌릴 때 2가지 방식 모두 다 원할하게 사용해야 함!!

==> 잘 활용하고 연습하고, 적용해야 함

       값 자체로 롤링할지 vs 필요한 인덱스 range 이용해서 돌릴지..

 

참고) dict 돌리면 어쩔??

a_dict = {"a":1234, "b":5678,"c":9999}

a_dict

 

for i in a_dict:

    print(i)     #키 값으로 출력됨

 

for i in a_dict:

    print(a_dict[i])

 

a_dict.keys()

 

for i in a_dict.keys():

    print(i)

 

a_dict.values ()

 

for i in a_dict.values():

    print(i)

 

# dict에서 key, values를 한 번에 같이 롤링하면 안될까??

==> dict.tiems()

a_dict.items()         <-- [ (), (), () ]

 

for i in a_dict.items():

    print(i)

 

for i in a_dict.items():

    print(i[0])    #keys

 

for i in a_dict.items():

    print(i[1])    #values

 

for i in a_dict.items():

    print("Key:",i[0], "Value:",i[1])

 

+++ 파이썬의 멀티 할당

===> 워드 카운팅!!!!

for k,v in a_dict.items():

    print("Keys:",k,"Values:",v)

 

잠시) 리스트에서는 .... 정수인덱스/값

         : 같이 돌릴려면... enumerate()함수

a_list

enumerate(a_list)

# [ (0,"a"),(1,"b"),(2,"c")....]

 

for i in enumerate(a_list):

    print(i)

 

for i in enumerate(a_list):

    print(i[0], i[1])

 

for i in enumerate(a_list):

    print(i,v)

 

***** 이러한 부분들은 정확하게 잘 알고 사용해야함


#실습

 

문제 : 국어 80점, 수학 70점, 영어 55점, 사회 90점

==> 이 학생의 평균을 구하는 코드를 작성해주세요!

 

# 여러 스타일로 하면서, 문제를 접근해보자!!

1. 문제 상황을 표현: 변수와 자료형!! + 관계

2. 기능적인 부분이 필요하다면 : 직접 만들거나 있는거 가져다 쓰기 ... len

  ==> 잡다한 기능을 알면 좋겠다!!

 

방법1) 꾸역꾸역

korean = 80

math = 75

english = 55

social = 90

#--> 주어진 문제에 대한 표현/ 코드화

#할 일 : 4과목의 평균을 구하는 일!!

 #        : 앞에서 설정한 변수들의 관계/ 기능...

avg_score = (korean + math + english + social) / 4

#관계/ 기능/// 알고리즘을 녹여야 함!!

print(avg_score)

 

방법2) 과목명은 필요없네;;

zumsu_list = [80,75,55,90]

sum( zumsu_list )

len( zumsu_list )

# --> 여러개의 점수들만 필요하네..

#      파이썬의 여러개의 자료형 : 리스트!!! set은 중복제거 되므로 XXXX

zumsu_list  = [80,75,55,90]

#  평균 : 리스트의 모든 원소의 합도 필요하고 리스트의 원소 개수도 필요하다.

avg_score= sum( zumsu_list ) / len( zumsu_list )

print(avg_score)

 

방법3) sum/len/avg 사용하지 말고 직접 구현하세요

# ==> 누적합!! 카운팅!!

# 필요한 변수 :누적합을 처리할 변수, 카운팅을 할 변수

tot = 0

cnt = 0

# 점수리스트들이 다 돌아가면서,,, 더하고, 카운팅!

for i in zumsu_list :

    tot += i

    cnt += 1

    #tot = tot + i

    #cnt = cnt + 1

avg_score = tot/cnt

print(i)

 

** 다음주 월!!

===> 리뷰

* 퇴실 체크!!