파이썬 랜덤 문자+숫자 추출

조회수 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 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    1번은 엄청 쉽습니다. range(98) 하시고, 맨앞에 IH를 붙이세요. 와우! 복세 편살


    2번은 조금 생각해 보셔야 합니다.
    지금 랜덤 문자열을 얻었을 때 모든 대문자와 숫자들 중에서 랜덤 추출이 되고 있죠.
    어떻게 그렇게 되는 걸까요?
    혹시 random.choice(string.ascii_uppercase + string.digits)에서의 string.ascii_uppercasestring.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...일 겁니다. 대부분의 오름차순 정렬은 숫자가 앞으로 가고 알파벳이 뒤로 가거든요.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)