TIL. Python 6일차

hyuko·2023년 2월 8일
0

산대특 국비과정

목록 보기
9/9

5일차까지 배운 내용을 통해 로또 문제를 풀어보았다.

5일차 때 풀었던 로또 문제를 풀이하는 시간을 가졌다.

csv_data = []
with open('lott.CSV') as file:
    for line in file:
        csv_data.append(line[:-1].split(','))
print(csv_data)
int(csv_data[0][-1])

마찬가지로 위와 같이 파일을 불러온다.

import math
def mean(num_list):
    
    return sum(num_list)/ len(num_list)

# 편차
def dev(num_list):
    m = mean(num_list)
    return [x-m for x in num_list]

def var(num_list):
    n = len(num_list)
    d = dev(num_list)
    return sum([x * x for x in d])/(n - 1)


# 표준편차
def stdev(num_list):
    return math.sqrt(var(num_list))

자주 쓰일듯 싶은 표준편차와 편차 분산 평균등을 함수화하여
가장 상단에 명시를 해줌으로써 어디서든 쓸 수 있는 상황이다.

우리가 쓰는 이 데이터는 로또의 숫자가 str값으로 되어있다.

그렇기 때문에 그 str데이터를 int데이터로 만들어 주어야한다.

for game in csv_data:
	for i, num in enumerate(game):
    	game[i] = int(num)

enumerate를 이용해서 csv_data의 for문에서 도는
리스트 game을 인덱스 번호를 참조해서 각각의 인덱스에
있는 값들을 num 값들을 int로 변환하여 넣어준다.

이제 로또 번호는 우리가 원하는 것 처럼 계산을 할 수 있는
상황이 된 것이다.

num_freq2 = [0]*45
for i in range(len(csv_data)):
    for j in range(len(csv_data[i])):
        n = csv_data[i][j]
        num_freq2[n - 1] = num_freq2[n - 1] + 1
print(num_freq2[:10])

새로운 리스트를 만들어주게 되는데 빈값이 1~45가 들어갈 만큼 있는 리스트를 생성하고
for문을 돌면서 값끼리 더해준다. 그리고 최상위 10개까지 본다.

이제 평균 값과 표준편차를 알아볼 시간이다.
위의 함수를 이용해서 바로 뽑아낼 수 있다.

for i, game in enumerate(csv_data):
	print(i, mean(game), stdev(game))
profile
백엔드 개발자 준비중

0개의 댓글