본문 바로가기

연습 프로젝트/python

22.11.30 로또 번호 추출기

아마도 파이썬을 배우고, 다른 라이브러리들도 학습한 사람들이라면 가장 먼저 도전하게 되는 프로그래밍이 아닐까 한다.

그 이름하여 로또 번호 추출기!

어제(11/29)부터 혼자서 이리 돌려보고, 저리 돌려보고 해서 총 2개의 코드를 만들었다.

 

1. 엑셀 파일로 저장

사용할 라이브러리를 총 2개이다.

임의로 번호를 추출해 줄 random 라이브러리 와 엑셀 파일을 불러와서 작업을 할 openpyxl 라이브러리.

먼저, 사용할 엑셀파일을 불러와서 작업할 worksheet 를 만든다음 ws 변수에 선언하여 주었다.

또한 range()함수를 이용해서 1부터 45까지의 번호를 생성하여 선언해 주었다.

이제 본격적으로 함수를 정의해 보자.

회수를 담당할 i 값을 선언해 준 다음 바로 while문으로 입력받은 횟수만큼 반복시켜 준다.

i 값이 1인 이유는 엑셀파일에 해당 변수를 사용할때 i가 0인 경우 row = 0 이 되는데, 엑셀의 Cell의 좌표는 (1,1)부터 시작이기 때문이다.

 

전달받은 number_list에서 random.sample()을 이용하여 6개의 값을 임의로 뽑아주었다.

임의로 추출한 값들이기 때문에 보기좋게 sort() method를 이용하여 오름차순 정렬을 해주었다.

 

엑셀 파일에 저장할 용도이기 때문에 첫번째 행(row)에 각 열(column)별 제목을 만들어 삽입해 주었다.

enumerate() 함수를 살펴보면 처음 titles에 적용한건 따로 시작값을 입력하지 않고 자로 col+1 로 사용하였지만, 두번째 함수는 시작값을 2로 사용하여 for문안에서 바로 col 변수로 사용하였다.

개인적으로 자료로 남겨넣고 싶어서 각 값을 다르게 설정하였는데, 위에 언급했듯이 엑셀의 시작 좌표는 (1,1)이다. 0은 좌표값으로 사용할 수 없다.

최종적으로 이렇게 생성된 파일을 다시 파일로 저장해 주었다.

이제 파일을 열어서 해당 내용이 잘 들어갔는지 확인해 보자.

lotto.py
0.00MB

 

2. 프로그램으로 만들기

tkinter 를 이용해서 프로그램으로도 만들어 보았다.

굳이 엑셀파일로 결과값을 볼 필요가 없기에 tkinter와 random 라이브러리 두개를 사용하였다.

함수는 같은 내용의 다른이름의 두개의 함수를 작성하였는데, 하나는 엔터키를 눌렀을 때 작동을 담당하고, 다른 하나는 버튼을 클릭했을 때 작동을 담당한다.

출력값을 예쁘게 보여주기 위해 format을 이용하였다.

창을 좌우로 나눠서 사용할 예정이기 때문에 왼쪽에 해당하는 frame_1을 설정해 주었다.

덩그러니 Entry만 하나 놓이기 그래서, frame_cnt 라는 LabelFrame을 하나더 추가해서 삽입해 주었다.

cnt_label은 사용자로부터 실행 횟수를 입력받는 Entry 이다.

마지막으로 실행 버튼을 cnt_label 우측에 배치해 주고, 실행할 함수를 lotto_click 으로 설정해 주었다.

우측에 보여질 결과 프레임을 만들어주고, 이제 결과를 표시해줄 리스트박스를 만들어 주었다.

1. Entry 의 경우 한줄만 표시되기 때문에 결과값이 마지막 회차만 출력된다. (NG)

2. Label 의 경우 마지막 회차의 결과값만 표시된다. (NG, 다른 방법이 있는지 찾아봤지만, 찾을수 없었다.)

3. Text 의 경우 결과가 다 표시되지만 각 회차별 줄바꿈이 안되서 한줄로 출력된다. (NG)

그렇게 여러번의 시도끝에 찾아낸게 Listbox이다.

scrollbar의 위치는 frame_2로 잡아주었다. 이걸 Listbox로 해버리면 이상한 결과가 나온다.

 

마지막으로 root.bind()를 통해 엔터키를 입력하게 되면 실행한 함수도 설정해 두었다. 이제 프로그램을 실행해보자!

테스트 삼아 5000회 실행해 보았다. 스크롤바도 잘 작동하고, 추천 번호도 모두 정상적으로 출력된다.

언제 시간날때 인터넷으로 로또나 한번 사서 실전 테스트도 해봐야겠다.

lotto_btn.py
0.00MB

'연습 프로젝트 > python' 카테고리의 다른 글

22.12.01 로또 번호 추출기 및 당첨확인  (0) 2022.12.01
22.11.18 PO 계산기  (0) 2022.11.18