랜덤으로 부서를 배정하는 코드를 짜고 싶습니다.

안녕하세요.
기초강의와 점프투파이썬으로 공부를 하면서 흥미를 잃지 않기 위해 스스로 필요하다 싶은 코드를 생각해서 한 번 짜보려는데 생각보다 구현이 잘 안 되네요.

제가 생각한 문제는

30명의 신규 입사자가 있고, 30명의 신규 입사자들을 Assurance 부서, Tax 부서, Deal 부서에 각각 20명, 6명, 4명씩 "랜덤으로" 배정하는 문제입니다.

일단은

from random import *

Staffs=range(1,31)
Staffs=set(Staffs)

Assigned_Assurance=(set(sample(Staffs,20)))

Assigned_Tax=set(sample((Staffs-Assigned_Assurance),6))

Assigned_Deal=set(sample((Staffs-Assigned_Tax-Assigned_Assurance),4))

print(Assigned_Assurance)
print(Assigned_Tax)
print(Assigned_Deal)

이렇게 해서 배정 자체는 나름대로 완벽하게(?) 했는데 여기서 input 명령어를 이용해서 자신의 배정번호를 입력했을 때 자신의 부서가 어디인지 알 수 있도록 구현하기 위해서

number_staff = (int(input("배정번호를 입력하세요: ")))

if number_staff in Assigned_Assurance: 
    print("배정번호 {0}번 입사자는 감사부서입니다. 축하합니다.".format(number_staff))
elif number_staff in Assigned_Tax: 
    print("배정번호 {0}번 입사자는 Tax부서입니다. 축하합니다.".format(number_staff))
elif number_staff in Assigned_Deal: 
    print("배정번호 {0}번 입사자는 Deal부서입니다. 축하합니다.".format(number_staff))
else: 
    print("오류입니다.")

를 추가했습니다.

그런데 이 경우, 당연하게도 같은 배정번호를 계속 입력해도 Run할 때마다 배정되는 부서가 바뀌게 되는데 한번 랜덤으로 뽑은 값을 고정하고 거기서 input 값만 계속 넣을 수 있도록 구현하는 방법이 없을까요?

어쩌면 초보적인 문제일 거 같기도 한데 제가 공부가 부족한 상태에서 물어보는 거 아닌가 하는 생각도 들고 그러네요..
이게 구현이 된 이후에는 다른 사람의 배정번호를 알아도 조회를 할 수 없도록 배정번호에 해당하는 다른 비밀번호 등을 입력해야 거기에 해당되는 배정번호가 조회되어서 결과를 알 수 있도록 하는 걸 시도해봐야겠습니다.

감사합니다.

감사하는코딩 1018

M 2020년 7월 26일 6:33 오후

목록으로
1개의 답변이 있습니다. 1 / 1 Page

다음처럼 물어보는 부분을 while 문으로 하면 되지 않을까요?

from random import *

Staffs=range(1,31)
Staffs=set(Staffs)

Assigned_Assurance=(set(sample(Staffs,20)))

Assigned_Tax=set(sample((Staffs-Assigned_Assurance),6))

Assigned_Deal=set(sample((Staffs-Assigned_Tax-Assigned_Assurance),4))

print(Assigned_Assurance)
print(Assigned_Tax)
print(Assigned_Deal)

while True:
    number_staff = (int(input("배정번호를 입력하세요: ")))

    if number_staff in Assigned_Assurance: 
            print("배정번호 {0}번 입사자는 감사부서입니다. 축하합니다.".format(number_staff))
    elif number_staff in Assigned_Tax: 
            print("배정번호 {0}번 입사자는 Tax부서입니다. 축하합니다.".format(number_staff))
    elif number_staff in Assigned_Deal: 
            print("배정번호 {0}번 입사자는 Deal부서입니다. 축하합니다.".format(number_staff))
    else: 
            print("오류입니다.")

박응용

M 2020년 7월 26일 6:36 오후

답변 정말 감사합니다. 제가 생각했던대로 잘 구현되네요. for문과 while문에 아직 숙달이 잘 안 되어서 막연하게 그걸 써봐야 될 거 같다는 생각만 들지 어떻게 써야될지 감이 안 잡히는 경우가 많네요. 덕분에 좀 더 알아가게 되었습니다. 감사합니다. - 감사하는코딩님, 2020년 7월 26일 7:49 오후 추천 , 대댓글