작성자: admin 작성일시: 2016-09-17 18:02:48 조회수: 277 다운로드: 31
카테고리: Python 태그목록:

파이썬에서 반복문을 사용하여 계산하기

반복문은 리스트 자료형 변수에 대해 여러가지 계산을 할 때 많이 사용된다.

예를 들어 10번의 시험 성적을 담고 있는 a라는 변수가 있을 때 평균 성적은 다음과 같이 구할 수 있다.

다음 코드에서 len() 명령어는 리스트 자료형 변수의 원소의 갯수를 구하는 명령어이다.

In [1]:
a = [90, 85, 95, 80, 90, 100, 85, 75, 85, 80]
a
Out[1]:
[90, 85, 95, 80, 90, 100, 85, 75, 85, 80]
In [2]:
len(a)
Out[2]:
10
In [3]:
sum = 0
for i in range(len(a)):
    sum = sum + a[i]
average = sum / len(a)    
average
Out[3]:
86.5

만약 학생이 두 명이고 이런 성적 변수가 두 개 있을 경우를 생각하자. 두 학생의 시험 성적의 합은 다음과 같이 구할 수 있다.

In [4]:
s = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
a1 = [90, 85, 95, 80, 90, 100, 85, 75, 85, 80]
a2 = [95, 90, 90, 90, 95, 100, 90, 80, 95, 90]
for i in range(len(s)):
    s[i] = a1[i] + a2[i]
s    
Out[4]:
[185, 175, 185, 170, 185, 200, 175, 155, 180, 170]

학생이 5명이라면 다음과 같이 리스트의 리스트로 데이터를 나타낼 수 있다.

In [5]:
X = [[ 85,  90,  20,  50,  60,  25,  30,  75,  40,  55],
     [ 70, 100,  70,  70,  55,  75,  55,  60,  40,  45],
     [ 25,  65,  15,  25,  20,   5,  60,  70,  35,  10],
     [ 80,  45,  80,  40,  75,  35,  80,  55,  70,  90],
     [ 35,  50,  75,  25,  35,  70,  65,  50,  70,  10]]

이 때 전체 평균은 다음과 같이 구한다.

In [6]:
sum = 0
num = 0
for i in range(len(X)):
    for j in range(len(X[i])):
        num = num + 1
        sum = sum + X[i][j]
sum / num
Out[6]:
52.7

연습 문제 1

어떤 학생이 5개의 과목을 수강하여 다음과 같은 성적(grade)을 받았다. (4점이 만점)

$$ X = 4, 3, 2, 3, 4 $$

이 5개 과목의 이수 학점(credit hours)은 각각 다음과 같다.

$$ W = 3, 3, 1, 2, 2 $$

이 때 평균 평점(GPA)은 성적의 단순 평균이 아니라 이수 학점을 가중치(weight)로 써서 다음과 같이 가중 평균을 구해야 한다.

$$ \dfrac{\text{성적과 이수 학점을 곱한 값의 총합 즉, 가중합}}{\text{이수 학점의 총합}} = \dfrac{3 \times 4 + 3 \times 3 + 1 \times 2 + 2 \times 3 + 2 \times 4}{3 + 3 + 1 + 2 + 2}$$

$i$번째 과목의 성적을 $X_i$라고 하고 $i$번째 과목의 이수 학점을 $W_i$라고 하면 가중 평균은 다음과 같은 수식으로 나타낼 수도 있다.

$$ \dfrac{W_1 X_1 + W_2 X_2 + W_3 X_3 + W_4 X_4 + W_5 X_5}{W_1 + W_2 + W_3 + W_4 + W_5} $$

이 학생의 평균 평점을 구하는 코드를 작성한다.

연습 문제 2

자료의 분산(Variance)는 각 자료 값에서 자료의 평균값을 뺀 나머지를 제곱한 값의 평균을 말한다.

예를 들어 자료가 다음과 같다고 하자

$$ X = 6, 5, 4, 7, 3, 5 $$

이 자료의 평균은 다음과 같다.

$$ \dfrac{(6 + 5 + 4 + 7 + 3 + 5)}{6} = 5$$

각 자료 값에서 자료의 평균값을 뺀 나머지를 제곱한 값을 모두 더한 값의 평균은 다음과 같이 구한다.

$$ \dfrac{(6 - 5)^2 + (5 - 5)^2 + (4 - 5)^2 + (7 - 5)^2 + (3 - 5)^2 + (5 - 5)^2}{6} $$

이 자료의 분산을 구하는 코드를 작성한다.

질문/덧글

아직 질문이나 덧글이 없습니다. 첫번째 글을 남겨주세요!