IT Curation 자세히보기

프로그래밍 학습/자체제작

Python | 로또 번호 추출 프로그램

icf_ 2022. 7. 14. 13:27

파이썬으로 만들어본 로또 번호 추출 프로그램.

시작번호와 종료번호를 입력후,

랜덤 생성에서 제외하고자 하는 번호를 입력한 뒤 생성 버튼을 누르면 됩니다.


출근길에 종종 로또 복권을 구매하는데,

그런 생각이 들었습니다. 제외 번호를 넣고 범위를 주고 자동 생성해보면 어떨까?

그렇게 생각해서 시작~종료 번호를 넣고,

제외할 번호를 넣는 칸을 만든뒤 1장분량을 생성하는 코드를 만들었습니다.


UI : Qt Designer로 생성.

 

파이썬 코드.
import sys
import os
import random
from PyQt5.QtWidgets import *
from PyQt5 import uic

#form_class = uic.loadUiType("exNum.ui")[0]

def resource_path(relative_path):
    """ Get absolute path to resource, works for dev and for PyInstaller """
    base_path = getattr(sys, '_MEIPASS', os.path.dirname(os.path.abspath(__file__)))
    return os.path.join(base_path, relative_path)

form = resource_path('exNum.ui')
form_class = uic.loadUiType(form)[0]

class WindowClass(QMainWindow, form_class) :
    global btn_ck
    def __init__(self) :
        super().__init__()
        self.setupUi(self)

        # self.lineEdit_in.textChanged.connect(self.lineCtr)
        #button 클리거
        #self.makeNum.clicked.connect(self.makeNum_func)
        self.makeNum.clicked.connect(self.makeNum_multiple)

    #아래는 함수 정의
    def makeNum_multiple(self):
        self.resultNum_1.setText(self.makeNum_func())
        self.resultNum_2.setText(self.makeNum_func())
        self.resultNum_3.setText(self.makeNum_func())
        self.resultNum_4.setText(self.makeNum_func())
        self.resultNum_5.setText(self.makeNum_func())

    def makeNum_func(self):
        strNum = self.strNum.text()
        endNum = self.endNum.text()
        xitNum = self.xitNum.text()
        numList = []

        #추출 대상 설정
        for i in range(int(strNum), int(endNum)+1):
            numList.append(i)

        #중복 제거 대상 만들기 set
        if xitNum == "":
            print("제외값없음")
        else:
            setXitNum = set(xitNum)
            if "," in setXitNum:
                setXitNum.remove(",")
                print(setXitNum)
            else:
                print(setXitNum)

            setXitNumList = list(setXitNum)

        #중복 제거대상 제거 시작
        #for i in setXitNumList:
        for i in range(len(setXitNumList)+1):
            values = i
            print("삭제대상", values)
            if int(values) in numList:
                numList.remove(int(values))
        print("제거완료 :",numList)

        randomList = random.sample(numList,6)
        print(randomList)
        print("결과입력시작")
        #self.setValues_func(randomList)
        resultValues = str(randomList)
        resultValues.strip("[")
        resultValues.strip("]")

        return resultValues
        #self.resultNum_1.setText(resultValues)

        #print(self.lineEdit_in.text())

if __name__ == "__main__" :
    # QApplication : 프로그램을 실행시켜주는 클래스
    app = QApplication(sys.argv)

    # WindowClass의 인스턴스 생성
    myWindow = WindowClass()

    # 프로그램 화면을 보여주는 코드
    myWindow.show()

    # 프로그램을 이벤트루프로 진입시키는(프로그램을 작동시키는) 코드
    app.exec_()

 

https://github.com/Seong-dong/automation_office/tree/main/lotto_generator

 

GitHub - Seong-dong/automation_office: 사무자동화 관련 개발

사무자동화 관련 개발. Contribute to Seong-dong/automation_office development by creating an account on GitHub.

github.com

lotto_generator.py
0.00MB
lotto_generator.ui
0.00MB

728x90

'프로그래밍 학습 > 자체제작' 카테고리의 다른 글

VBA | Prepare Statement _ 자체제작  (0) 2022.07.08