Python/연습장

로또 구매 프로그램

joo_coding 2025. 2. 27. 19:47
round = 0

while True:
    import random

    list_ = []
    for i in range(1, 46):
        list_.append(i)

    random.shuffle(list_)
    bonus_num = list_.pop()
    lotto = sorted(list_[:6])

    round += 1
    print("==로또 [%d]회차==" % round)

    print(input("로또를 구매하시겠습니까? enter"))

    print("당첨번호는")
    print(lotto, "입니다.", "보너스 번호는", bonus_num, "입니다.") #결과 확인하기 위해 일부러 먼저 배치


    user_choice = input("로또 번호 6개를 선택해주세요.:") #input으로 나온 값은 str
    user_choice = user_choice.split()  # 공백을 기준으로 문자열 구분하기

    user_choice[0] = int(user_choice[0])  # 리스트 안에 있는 요소를 하나하나 인트화 시켜주고
    user_choice[1] = int(user_choice[1])
    user_choice[2] = int(user_choice[2])
    user_choice[3] = int(user_choice[3])
    user_choice[4] = int(user_choice[4])
    user_choice[5] = int(user_choice[5])
    user_choice = set(user_choice)  # 인트화 시켜준 다음에 리스트화
    # 리스트 안에 들어가면 요소가 str 이라서, 인트화 했어도 리스트 들어가면 인트가 아니게됨
    print("선택하신 번호는", user_choice, "입니다.")

    auto = input("자동으로 하시겠습니까?(yes/no): ")

    if auto == "yes": #1등 될때까지 반복
        print("1등에 당첨될 때 까지 구매하겠습니다.")
        print(input("시작을 원하시면 엔터를 눌러주세요."))

        count_ = 1 #회차

        while True:
            import random

            list_ = []
            for i in range(1, 10): #결과 빨리 내려고 일부러 범위 10
                list_.append(i)

            lotto = random.sample(list_, 6)
            print(sorted(lotto))

            count_ += 1

            if lotto == user_choice:
                print("1등에 당첨 되셨습니다.")
                print("%d회 만에 당첨 되셨습니다." % count_)
                break
                #print("%d회 만에 당첨 되셨습니다." % count_)



    elif auto == "no": #등수 알려주고 끝내

        #당첨번호 갯수를 알기위해 교집합을 이용
        user_choice = set(user_choice) #리스트를 집합화 해주고
        lotto = set(lotto)

        # 등수체크
        # 1등은 6개 모두 일치
        correct = user_choice & lotto #당첨번호 갯수 = (둘의 교집합)
        print(f"일치하는 번호는", correct, "입니다.")

        if len(correct) == 6: #len의 type은 int(=정수)
            print("축하합니다. 1등입니다! 당첨금은 20억 입니다.")
        elif len(user_choice & lotto) == 5 and bonus_num in user_choice:
            print("축하합니다. 2등입니다.")
        elif len(user_choice & lotto) == 5:
            print("3등입니다. 당첨금은 150만원 입니다.")
        elif len(user_choice & lotto) == 4:
            print("4등입니다. 당첨금은 5만원 입니다.")
        elif len(user_choice & lotto) == 3:
            print("5등입니다. 당첨금은 5천원 입니다.") #딕셔너리
        else:
            print("꽝")