추첨을 위해 가장 중요한 과정은 무작위 수를 뽑는 것입니다. 그 부분을 지원해주는 모듈이 바로 random 모듈입니다. time 모듈은 20번 라인의 time.sleep(1)을 사용하기 위해 포함시킨 것으로, 이것은 단지 추첨의 긴장감(?)을 높이기 위해 1초에 하나씩 출력되는 기능을 담당합니다. (^^)
5~6번 라인의 while문은 '교사'나 '학생'을 입력하기 전에는 계속 누구를 대상으로 추첨하겠습니까? (교사, 학생)을 물어보도록 합니다. '교사ˇ'나 'ˇ학생' 등 띄어쓰기가 들어가도 안됩니다. 약간의 코딩이면 수정할 수 있습니다. strip 등
파일이름=파일이름.strip()
8번 라인은 앞서 선택한 '교사'나 '학생'파일의 모든 내용을 추첨파일이라는 변수에 대입하는 과정입니다.
9~10번 라인에서는 readlines() 명령문을 이용하여 추첨파일 안의 내용을 한 줄씩 읽어 append()로 대상자명단 배열에 그 내용(각 문장)을 집어넣습니다.
12번 라인에서는 len()을 이용하여 대상자명단에 입력된 배열의 갯수를 파악합니다. 아이디의 갯수, 즉 설문조사에 참여한 사람의 수를 알아낼 수 있습니다.
13번 라인에서는 12번 라인에서 알아낸 인원수를 활용하여 학생의 153명 중 몇 명을 추첨하겠습니까? 라는 문장을 출력하고 숫자를 입력받습니다. 12번 라인에서 알아낸 인원수는 숫자int 형식의 자료입니다. 문장으로 연결하기 위해서는 문자열 형식으로 바꿔줄 필요가 있기 때문에 'str(인원수)'와 같은 조치를 해줍니다.
14번 라인에서는 list함수를 이용하여 인원수 만큼의 배열을 만듭니다. 만일 인원수가 10이라면 0부터 9까지 10개의 배열이 만들어집니다.
>>> 추첨배열=list(range(10))
>>> 추첨배열
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> 추첨배열[0]
0
>>> 추첨배열[1]
1
>>> 추첨배열[9]
9
>>> 추첨배열[10]
Traceback (most recent call last):
File "", line 1, in
추첨배열[10]
IndexError: list index out of range
16번 라인에서는 random.sample() 함수를 이용하여 추첨배열의 내용 중 추첨인원(13번 라인에서 입력받은 숫자 내용) 수 만큼의 숫자를 무작위로 선택합니다. random 기능을 이용하면 무작위로 뽑다보니 같은 값이 다시 나올 수도 있지만 random.sample() 함수를 사용하면 중복되지 않는 값을 원하는 갯수만큼 선택할 수 있습니다.
>>> 추첨배열=list(range(10))
>>> 추첨배열
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> random.sample(추첨배열, 3)
[3, 4, 9]
>>> random.sample(추첨배열, 3)
[5, 1, 0]
18번 라인에서는 + + + + + 학생 당첨자 ID + + + + +와 같은 내용을 출력합니다.
19~21번 라인에서는 추첨번호 배열 안에 들어있는 내용(sample로 뽑아진 숫자값들)을 순서대로 대상자명단(9~10번 라인에서 만들어진 아이디 배열)에 적용하여 하나씩 출력합니다. |
2020년 6월말 경,
학교에서는 학교환경개선 사업 관련으로 학교공간에 대한 설문조사를 진행하였었고 그 설문조사에는 약 200여명의 학교 구성원이 참여하였습니다. 적극적인 참여를 유도하고자 설문참여자 중 뽑기(?)를 통해 소정의 상품을 지급하겠다고 홍보하였으며 설문조사 후 수집이 된 학생의 정보는 설문조사 시 입력한 이메일 주소 뿐이라 그것을 이용하여 추첨을 하기로 했습니다.
이메일 주소를 모조리 종이로 출력해서
가위로 싹뚝싹뚝 자른 다음
상자에 넣고 흔들어서 섞고
그 중 10장을 뽑아내는 방법도 있겠습니다마는...
추가 설치 과정 없이 python의 기본 모듈만으로 해결할 수 있는 프로그램을 만들다보니 굉장히 간단하게 만들어졌습니다. 대신 출력되는 모습도 많이 허
접전합니다.