티스토리 뷰
아래의 코드를 실행하면 로또번호 6개를 추출해준다.
import random
lottery_numbers = random.sample(range(1, 46), 6)
print(lottery_numbers)
실행시 결과 화면,
1개만 추출하면 너무 아쉬워서 10개 추출을 시켜보자면...
import random
for i in range(10):
lottery_numbers = random.sample(range(1, 46), 6)
print(lottery_numbers)
위 코드를 실행하면 다음과 같이 10개의 리스트가 출력된다.
이것을 조금 업그레이드 해서 GUI (graphical user interface) 모드로 만들고 싶다면,
import random
import tkinter as tk
def generate_lottery_numbers():
lottery_numbers = random.sample(range(1, 46), 6)
lottery_numbers_str = " ".join(str(x) for x in lottery_numbers)
result_label.config(text=lottery_numbers_str)
root = tk.Tk()
root.title("Lottery Numbers Generator")
result_label = tk.Label(root, text="")
result_label.pack()
generate_button = tk.Button(root, text="Generate", command=generate_lottery_numbers)
generate_button.pack()
root.mainloop()
이 코드를 실행하면 다음과 같은 윈도우 창이 열린다.
아 그런데, 너무 창이 조그맣다. 윈도우 실행창을 800x600 정도로 조금 크게 실행되게 하고 싶다면..
import random
import tkinter as tk
def generate_lottery_numbers():
lottery_numbers = random.sample(range(1, 46), 6)
lottery_numbers_str = " ".join(str(x) for x in lottery_numbers)
result_label.config(text=lottery_numbers_str)
root = tk.Tk()
root.geometry("800x600")
root.title("Lottery Numbers Generator")
result_label = tk.Label(root, text="")
result_label.pack()
generate_button = tk.Button(root, text="Generate", command=generate_lottery_numbers)
generate_button.pack()
root.mainloop()
하지만 화면 구성이 조금 문제가 있다. Generate(생성) 버튼을 화면 하단 중간에 놓고 싶다?
import random
import tkinter as tk
def generate_lottery_numbers():
lottery_numbers_list = []
for i in range(10):
lottery_numbers = random.sample(range(1, 46), 6)
lottery_numbers_str = " ".join(str(x) for x in lottery_numbers)
lottery_numbers_list.append(lottery_numbers_str)
result_label.config(text="\n".join(lottery_numbers_list))
root = tk.Tk()
root.geometry("800x600")
root.title("Lottery Numbers Generator")
result_label = tk.Label(root, text="")
result_label.pack(side=tk.TOP, fill=tk.X, expand=True, anchor="center")
generate_button = tk.Button(root, text="Generate", command=generate_lottery_numbers, bg="black", fg="white")
generate_button.config(height=5, width=20)
generate_button.pack(side=tk.BOTTOM, fill=tk.X, expand=True, anchor="center")
root.mainloop()
자, 하지만 저런 랜덤번호로는 당첨률이 떨어질테니 이번에는 역대로또 당첨번호들에서 추출해내는 방법을 만들어 보고자 한다.
먼저, 동행복권에가서 로또번호 당첨내역을 엑셀로 다운받아본다.
다운로드 받은 파일은 다음과 같다.
다운로드 받은 엑셀파일을 숫자별로 당첨에 가장 많이 표출된 것을 우선으로 정렬을 한다. 당첨번호를 카운팅해봤다.
정렬을 한 파일은 다음과 같다.
다음은 나온횟수별로 내림차 정렬을 해봤다. 번호 43번이 현재 182회 제일 많이 나왔고, 22번이 135번 제일 적게 나왔다. 여기서 선택은 제일 많이 나온 인기있는 숫자를 로또의 신도 좋아하는 것이 아닌가 싶은 생각이다. 43번과 34번. 그리고 눈에 띄는 숫자 33번.그리고 1이라는 숫자도 상위권에 있다. 6위 안에 포함되는 숫자라고 보인다. 17과 12도 자주 눈에 띈다. 하지만 통계나 확률이 결국에는 조작되지 않았다고 하려면 나머지 인기없는 숫자도 자주 나와줘야 할것이다.
이러한 엑셀 파일을 참고해서 가장 많이 나온 번호는 파악이 되었다. 가장 많이 나온번호와 가장적게 나온 번호를 추출하는 번호의 참조값으로 5개를 추출하고, 나머지 하나는 랜덤으로 추출하게 해봤다.
import random
import tkinter as tk
def generate_lottery_numbers():
preferred_numbers = [6,9,11,12,14,15,17,18,20,22,23,28,29,29,32,35,41,44,44,45]
all_lists = []
for i in range(10):
lottery_numbers = set(random.sample(preferred_numbers, 5))
random_number = random.randint(1, 45)
while random_number in lottery_numbers:
random_number = random.randint(1, 45)
lottery_numbers.add(random_number)
all_lists.append(list(lottery_numbers))
result_label.config(text='\n'.join(' '.join(str(x) for x in l) for l in all_lists))
root = tk.Tk()
root.geometry("800x600")
root.title("Lottery Numbers Generator")
result_label = tk.Label(root, text="", font=("Helvetica", 20))
result_label.pack(side=tk.TOP, fill=tk.X, expand=True, anchor="center")
generate_button = tk.Button(root, text="Generate", command=generate_lottery_numbers, bg="black", fg="white")
generate_button.config(height=5, width=20)
generate_button.pack(side=tk.BOTTOM, fill=tk.X, expand=True, anchor="center")
root.mainloop()
다시 기본형으로 만들고 싶다면,
import random
import tkinter as tk
def generate_lottery_numbers():
all_lists = []
for i in range(10):
lottery_numbers = random.sample(range(1,46), 6)
all_lists.append(lottery_numbers)
result_label.config(text='\n'.join(' '.join(str(x) for x in l) for l in all_lists))
root = tk.Tk()
root.geometry("800x600")
root.title("Lottery Numbers Generator")
result_label = tk.Label(root, text="", font=("Helvetica", 20))
result_label.pack(side=tk.TOP, fill=tk.X, expand=True, anchor="center")
generate_button = tk.Button(root, text="Generate", command=generate_lottery_numbers, bg="black", fg="white")
generate_button.config(height=5, width=20)
generate_button.pack(side=tk.BOTTOM, fill=tk.X, expand=True, anchor="center")
root.mainloop()
'파이썬' 카테고리의 다른 글
파이썬 주석처리 단축키가 안먹힐 때(Win+Space) (0) | 2023.01.28 |
---|---|
python, wheel package is not installed error 해결법 (0) | 2023.01.27 |
python py를 exe 실행 파일로 만드는 방법 (0) | 2023.01.15 |
"Getting requirements to build wheel" means. (0) | 2023.01.14 |
ModuleNotFoundError: No module named 'selenium' 오류 (0) | 2022.07.18 |