본문 바로가기

Programmer's Diary/Python

[Python] 2022-03-10 개인 Project _추첨 프로그램 단계적 개발_1단계

728x90

- 1단계는 파이썬 콘솔(명령 프롬프트)에서만 진행되는 프로그램이다.

- n명의 사람을 입력 받은 후, 그 중 랜덤하게 1명을 뽑아서 출력한다.

# <<<제비뽑기 프로그램>>>
# 1. n명의 사람을 입력 받기
# 2. 입력 받은 사람 중 한 명을 랜덤으로 뽑아서 출력

import random
import time


# 1 이상의 정수를 입력 받기
def get_num():
    while True:
        n = input("몇 명을 입력하시겠습니까? : ")
        if n.isdigit():
            n = int(n)
            if n > 0:
                return n
        print("1 이상의 정수를 입력해 주세요.")


# 리스트 생성 함수
def get_list():
    name_list = []
    num = get_num()
    for i in range(num):
        name = input("%d번째 이름을 입력하세요 : " % (i + 1))
        name_list.append(name)
    print("#" * 50)
    print("입력한 명단입니다.")
    for i in range(num):
        print("{}번 : {}".format(i + 1, name_list[i]))
    print("#" * 50)
    return name_list


# 리스트 내에서 한 개 추첨하는 함수
def get_one(name_list):
    pick = random.randrange(len(name_list))
    print("당첨자는!!!!!!!!!!!!??????????????")
    for i in range(5):
        print(5 - i)
        time.sleep(1)
    print("{}님 입니다!! 축하합니다!!!!!".format(name_list[pick]))


def start():
    print("<<<<< 제비뽑기 >>>>>")
    while True:
        cmd = input("제비뽑기를 시작하려면 아무키나 누르세요(종료:q) : ")
        if cmd == 'q':
            break

        # 1. n명의 사람을 입력 받기
        name_list = get_list()

        # 2. 입력 받은 사람 중 한 명을 랜덤으로 뽑아서 출력
        while True:
            get_one(name_list)
            cmd = input("같은 명단으로 한 번 더 뽑으려면 아무키나 누르세요(새로시작:q) : ")
            if cmd == 'q':
                break
            print('#' * 50)


if __name__ == '__main__':
    start()

- 매우 초보적인 수준의 프로그램(이라고 부르기도 힘든 코드)이다.

- 매번 인원수와 이름을 입력해줄 수 있어서, 명단이 계속 바뀌어야 하는 경우에는 장점이 될 수 있다.

- 명단이 고정되어 있다면, 프로그램을 종료하지 않는 이상은 같은 명단으로 계속 추첨할 수 있다.

- 프로그램이 종료되면 명단이 사라지기 때문에, 나중에 같은 명단을 사용하려고 하면 다시 입력해야 하는 문제가 있다.

 

-> SQLite를 활용하여 명단을 저장해 놓고, 프로그램 시작 후 명단을 불러와서 바로 추첨할 수도 있고, SELECT, DELETE, UPDATE 로 명단을 수정하여 추첨을 할 수 있도록 만드는게 2단계 목표 (아래 수업 코드 활용)

https://powerstone829.tistory.com/10?category=1006501 

 

[프로젝트형 IoT 서비스 개발 4회차 - Day10] 2022-02-09(수) 파이썬 기본8 - 파일, SQLite - 이진만 강사님

 [1] 파일 입출력 (1) 파일 열기 : 변수 = open(파일경로, '모드')     모드 : r(읽기), w(쓰기), a(추가)... (2) 파일 읽기 : 변수.read() (3) 파일에 쓰기 : 변수.write(문자열) (4) 파일 닫기 : 변수.close(..

powerstone829.tistory.com

- 끝 -

728x90