파이썬 랜덤 문자+숫자 추출
조회수 996회
안녕하세요 요즘 파이썬공부 열심히하는 학생입니다.
랜덤숫자도 되고 랜덤 문자도 되는데 이걸 섞어가며 심화단계로 가려고 하니 약간 팁이 필요한거같아 질문 올립니다.
import random
import string
print(''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(100)))
하면
IH58VBFL59HAX0HVGCRVVWDZC6MW6PVCL8H6NJYQVBC6LDVZB4DESRN5YYWVU8OJ8AP3SSCRS5JG225UE6TWZITDHY9AL2M6H7FB
이렇게 출력이 되는데요
제가 하고싶은것은
- 위치 고정
예를 들면 앞에 두개 IH는 항상 나오게 하고 싶습니다. IHXXXXXXXXXXXXXXXXXXXXXXX 이런식으로요 - 문자와 숫자의 제한(?)
숫자는 6까지만, 문자는 f 까지만 나오게 하고싶습니다. IH6f6f6f6f6f6f6f6f6.... 가 마지막 문자열이 되겠죠
고수님들의 팁 부탁드립니다.
1 답변
-
1번은 엄청 쉽습니다.
range(98)
하시고, 맨앞에IH
를 붙이세요. 와우! 복세 편살
2번은 조금 생각해 보셔야 합니다.
지금 랜덤 문자열을 얻었을 때 모든 대문자와 숫자들 중에서 랜덤 추출이 되고 있죠.
어떻게 그렇게 되는 걸까요?
혹시random.choice(string.ascii_uppercase + string.digits)
에서의string.ascii_uppercase
와string.digits
때문일까요?
코드를 아무리 읽어봐도 대문자에 관련 있어 보이는 건string.ascii_uppercase
뿐이고, 숫자에 관련 있어 보이는 건string.digits
뿐이니까요.
근데 이게 애초에 뭘까요?
함 확인해 볼까요?import string print(string.ascii_uppercase) print(string.digits)
음... 그러면
random.choice('가나다')
는'가나다'
라는 문자열에서 임의의 순서에 존재하는 뭔가를 하나 선택하는 기능인 걸까요?
그렇다면... 0, 1, 2, 3, 4, 5, 6, a, b, c, d, e, f 중에서 하나를 랜덤으로 고르게 하려면random.choice(?????)
에 뭘 넣으면 될려나요?
과연 이 수수께끼는 풀릴 것인가?!!
이제 질문자님의 숨은 코딩 능력이 깨어날 시간입니다!!! 직접 해보세요.
PS. 랜덤 추출에 "마지막"이란 개념은 없습니다. 굳이 따지자면, 그 마지막이라는 것은 '가능한 모든 경우의 수의 나열을 정렬했을 때 가장 마지막에 등장하는 경우의 수'를 가리키는 것일 텐데요 그건 아마도
IHFFFFF...
일 겁니다. 대부분의 오름차순 정렬은 숫자가 앞으로 가고 알파벳이 뒤로 가거든요.
댓글 입력