신규 블로그를 만들었습니다!

2020년 이후부터는 아래 블로그에서 활동합니다.

댓글로 질문 주셔도 확인하기 어려울 수 있습니다.

>> https://bluemiv.tistory.com/

 

난수 만들기

난수를 만들기 위해, string 모듈과 random 모듈을 이용합니다. string의 digits와 random의 choice()를 사용합니다. (본 글의 예제는 Python 3.7 버전과 sublime text 3을 이용해서 진행했습니다.)

 

random.choice()

문자열에서 랜덤하게 하나의 문자를 선택해줍니다.

 

import random

string_pool = "0123456789"
num = random.choice(string_pool)
print(num)​

random.choice()를 사용하면, "0123456789"라는 문자열에서 하나의 문자열만을 선택합니다. 위에서는 0123456789를 직접 타이핑해서 사용했지만, string 모듈을 이용하면 간단하게 할 수 있습니다.

 

import string

string_pool = string.digits
print(string_pool)​

 

 

 

string.digits

숫자 0부터 9까지 문자열로 나타내줍니다. '0123456789'와 같습니다.

 

위의 digits와 .choice() 메소드를 이용해서 8자리의 임의의 난수를 발생시켜 보도록 하겠습니다. for문을 이용하는 방법입니다.

import string
import random

_LENGTH = 8 # 몇자리?
string_pool = string.digits # "0123456789"
result = "" # 결과 값
for i in range(_LENGTH) :
    # 랜덤한 하나의 숫자를 뽑아서, 문자열 결합을 한다.
    result += random.choice(string_pool)
print(result)​

계속 실행을 해보면 값이 바뀌는 것을 확인 할 수 있습니다.

 

 

랜덤한 문자열 만들기

위에서는 랜덤한 난수를 만들었습니다. 랜덤한 문자열을 만드는 것도 위와 똑같습니다. string pool만 바꿔주면 됩니다. 소문자만을 표현해주는 string.ascii_lowercase, 대문자만을 표현해주는 string.ascii_uppercase, 대소문자 모두 표현해주는 string.ascii_letters가 있습니다.

 

import string
print(string.ascii_lowercase)
print(string.ascii_uppercase)
print(string.ascii_letters)​

 

 

string.ascii_lowercase

소문자만을 포함하고 있는 문자열입니다. 'abcdefghijklmnopqrstuvwxyz'와 같습니다.

 

string.ascii_uppercase

대문자만을 포함하고 있는 문자열입니다. 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'와 같습니다.

 

string.ascii_letters

대소문자 모두를 포함하고 있는 문자열입니다. 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'와 같습니다.

 

10자리의 랜덤한 문자열을 만드는 예제!

1. 소문자만을 이용한 랜덤한 문자열

import string
import random

_LENGTH = 10 # 10자리
string_pool = string.ascii_lowercase # 소문자
result = "" # 결과 값
for i in range(_LENGTH) :
    result += random.choice(string_pool) # 랜덤한 문자열 하나 선택
print(result)​

 

 

2. 대문자만을 이용한 랜덤한 문자열

import string
import random

_LENGTH = 10 # 10자리
#string_pool = string.ascii_lowercase # 소문자
string_pool = string.ascii_uppercase # 대문자
result = "" # 결과 값
for i in range(_LENGTH) :
    result += random.choice(string_pool) # 랜덤한 문자열 하나 선택
print(result)​

 

 

 

3. 대소문자 모두 이용한 랜덤한 문자열

import string
import random

_LENGTH = 10 # 10자리
#string_pool = string.ascii_lowercase # 소문자
#string_pool = string.ascii_uppercase # 대문자
string_pool = string.ascii_letters # 대소문자
result = "" # 결과 값
for i in range(_LENGTH) :
    result += random.choice(string_pool) # 랜덤한 문자열 하나 선택
print(result)​

 

 

 

랜덤한 숫자, 문자열 만들기

대소문자를 구분하고 숫자가 포함된 랜덤한 숫자문자열 조합을 만들고 싶을때는, 위와 같은 방법으로 string_pool만 바꿔주면 됩니다.

 

import string
import random

_LENGTH = 12 # 12자리

# 숫자 + 대소문자
string_pool = string.ascii_letters + string.digits

# 랜덤한 문자열 생성
result = "" 
for i in range(_LENGTH) :
    result += random.choice(string_pool) # 랜덤한 문자열 하나 선택
print(result)​

 

문자열 + 연산을 통해 string.ascii_letters와 string.ascii_digits를 결합해준 값을 string_pool로 사용하면 됩니다.

 

랜덤한 비밀번호 만들기

만약 특수기호까지 넣고 싶다면? string 모듈에는 특수기호를 모아둔 문자열이 있습니다. string.punctuation를 사용하면 됩니다.

 

import string
print(string.punctuation)​

 

string.punctuation

특수문자를 표현해줍니다. '!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'와 같습니다.

 

문자열 + 숫자 + 특수기호를 포함한 랜덤한 문자열을 만들어보도록 하겠습니다. 방법은 위와 같습니다.

 

import string
import random

_LENGTH = 20 # 20자리

# 숫자 + 대소문자 + 특수문자
string_pool = string.ascii_letters + string.digits + string.punctuation

# 랜덤한 문자열 생성
result = "" 
for i in range(_LENGTH) :
    result += random.choice(string_pool) # 랜덤한 문자열 하나 선택
print(result)
​

 

 

 

 


 

관련된 글

2018/09/03 - [Language/Python] - Python :: 파이썬 문자열(string) 알아보기(이스케이프 문자, 인덱싱, 슬라이싱)

2018/08/31 - [Language/Python] - Python :: 파이썬의 숫자형 자료형(정수, 실수, 복소수, 8진수, 16진수)

2018/08/30 - [Language/Python] - Python :: 파이썬 개발도구, IDLE 과 서브라임 텍스트 (설치 및 다운로드)

2018/08/29 - [Language/Python] - Python :: 파이썬을 사용하는 이유? (프로그래밍 언어)

2018/09/08 - [Language/Python] - Python :: 파이썬 리스트(List) 사용방법과 여러가지 메소드

2018/09/19 - [Language/Python] - Python :: 파이썬 튜플(Tuple) 자료형 개념과 사용방법

2018/10/03 - [Language/Python] - Python :: 파이썬 딕셔너리(Dictionary) 사전 개념 및 사용방법

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기