짝수 길이의 랜덤 4자리 PIN 번호 시리즈를 생성한 결과는 다음과 같습니다.
enter the series size 4 Random four digit pin number series 0 0813 1 7218 2 6739 3 8390
이 문제를 해결하기 위해 아래 단계를 순서대로 따릅니다.
해결 방법
빈 리스트를 하나 만들고,
result변수를True로 초기화합니다.while루프를 사용해 사용자로부터 시리즈의 크기를 입력받습니다.if조건문으로 크기가 홀수인지 짝수인지 판별합니다. 크기가 홀수라면result를False로 설정하고, 짝수가 입력될 때까지 루프를 계속 반복합니다.
l = []
while(True):
size = int(input("enter the series size"))
if(size%2==1):
result = False
크기가 짝수라면
result를True로 설정하고,for루프를 이용해 입력받은 크기만큼 반복 작업을 수행합니다.
result = True for i in range(size):
랜덤한 4자리 숫자를 생성하여
rand_pin에 저장합니다.rand_pin값을 리스트에 추가(append)하여 전체 시리즈를 완성합니다.
rand_pin = random.sample(num,4)
l.append("".join(rand_pin))
pd.Series(l)
result값이True라면if조건문으로 루프를 종료(break)합니다.
if(result==True):
break
핵심 요소 설명
코드에서 사용되는 주요 모듈과 함수는 다음과 같습니다.
string.digits: 문자열 '0123456789'를 반환하며, 랜덤 숫자를 추출할 후보 풀 역할을 합니다.
random.sample(num, 4): 후보 풀에서 중복 없이 4개의 숫자를 무작위로 선택합니다.
"".join(rand_pin): 선택된 4개의 문자를 하나의 4자리 PIN 번호 문자열로 연결합니다.
pd.Series(l): 리스트에 담긴 PIN 번호들을 인덱스와 함께 pandas Series 형태로 변환해 가독성 있게 출력합니다.
전체 예제 코드
아래 코드를 통해 전체 흐름을 이해해 보겠습니다.
# pandas를 pd로 임포트
import pandas as pd
import random,string
num = string.digits
result = True
l = []
while(True):
size = int(input("enter the series size"))
if(size%2==1):
result = False
else:
result = True
for i in range(size):
rand_pin = random.sample(num,4)
l.append("".join(rand_pin))
series = pd.Series(l)
print("Random four digit pin number series\n",series)
if(result==True):
break
실행 결과
enter the series size 3 oops! enter an even number! enter the series size 5 oops! enter an even number! enter the series size 4 Random four digit pin number series 0 0813 1 7218 2 6739 3 8390 dtype: object
위 실행 결과에서 볼 수 있듯이, 사용자가 3이나 5처럼 홀수를 입력하면 짝수를 입력하도록 안내 메시지가 출력되며 다시 입력을 요청합니다. 짝수인 4를 입력했을 때 비로소 랜덤 4자리 PIN 번호 4개로 구성된 시리즈가 생성되고 프로그램이 정상적으로 종료됩니다.