python/연습장

로또 자동 판매기 (no sample)

joo_coding 2025. 2. 26. 16:49
# 로또 자동 만들기
# 1. 로또의 기본 기능은 그대로 유지 됩니다.
# => 번호개수, 등수, 당첨금, 4등5등은 고정, 3등은 150만원, 2등은 5천, 1등은 20억
# 2.회차별 컴퓨터가 자동으로 돌림
# 4.그 다음에 내가 번호 6개 선택 (모든 로또용지가 같은 번호라고 가정)
# 5.그럼 현재 회차가 진행이 되고, 당첨금을 보여줌
# 6.이어서 다음 회차로 이어집니다.
# 7.추가로 회차 넘어갈때 '자동'이라는 선택지가 있는데, 이걸 누르면 자동으로 내가 1등에 당첨 될때까지
# 현재 번호로 쭉 갑니다. 내가 몇회차에 이 번호가 1등이 되는지 출력
# 8.로또번호를 하나씩 입력합니다. 그러면 그거를 데이터로 저장을 할텐데 중복은 안되죠? 중복검사를 합니다
# 다만 in 연산자를 쓰지않고 중복검사를 할 것
# 9.랜덤 쓰시면 됩니다. 대신에 랜덤으로 번호를 고르되, sample 쓰지마세요. (6개 중복 안되게)
# 10. 최종 출력할때 항상 오름차순 정렬
from os import remove

while True:
    import random

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

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

    print("당첨번호는")
    print(lotto)


    user_choice = input("로또 번호를 선택해주세요.:")
    user_choice = user_choice.split()  # 공백을 기준으로 문자열 구분하기
    # user_choice = int(user_choice) #리스트가 인트화 가능해?
    # for i in range(0,5):
    #     user_choice[i] = int(user_choice[i])

    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 = list(user_choice)  # 인트화 시켜준 다음에 리스트화
    print(user_choice)

    num = [] #고른 번호 중복 검사하기.
    for i in range(1, 46):
        num.append(i) # 1부터 45가 들어있는 리스트가 만들어짐

    num = set(num) #중복이 허용되지 않는 set으로 변환시켜주고





    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):
                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:
            print("3등입니다. 당첨금은 150만원 입니다.")
        elif len(user_choice & lotto) == 4:
            print("4등입니다. 당첨금은 5만원 입니다.")
        elif len(user_choice & lotto) == 3:
            print("5등입니다. 당첨금은 5천원 입니다.") #딕셔너리
        else:
            print("꽝")

 

# 고른 번호 중복 검사하기.
num = []  # 1부터 45까지 들어있는 리스트
for i in range(1, 46):
    num.append(i)

count_ = 1 #유저가 고른 로또번호 갯수
while count_ < 7:
    count_ += 1

    user_choice = input("번호를 골라주세요.") #하나씩 고르기
    user_choice = int(user_choice)
    print(user_choice) #무슨 번호를 골랐는지 보여준다

    num.remove(user_choice) # 45까지 들어있는 리스트에서 고른번호 삭제하기
    #ValueError: list.remove(x): x not in list
    print(num)

    #내가 골랐던 번호 다 보여주기