데이터 분석가

파이썬(Python) 프로젝트 패스워드(Password)생성 프로그램 본문

파이썬(python) 프로젝트 모음

파이썬(Python) 프로젝트 패스워드(Password)생성 프로그램

PlintAn 2023. 3. 2. 20:00

안녕하세요

 

이번 시간에는 패스워드 만드는 프로그램을 만들어보도록 할게요 ~

 

넥슨은 비밀번호를 만들어라 !

뭔가 조금 익숙한 화면이지 않을까요 ?(나이 인증ㄷㄷ)

 

항상 비밀번호를 만드는 데 고민을 했던거 같네요( 사실 귀찮아서 맨날 123123)

 

이번 시간을 통해 알차게 비밀번호를 만들어 봅시다 !

 

이번 시간에는 random 함수의 randint, choice, shuffle 함수를 이용해

패스워드를 만드는 프로그램을 만들어 보겠습니다.

 

import random #랜덤 함수 불러오기
letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
numbers = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
symbols = ['!', '#', '$', '%', '&', '(', ')', '*', '+']
#문자열, 숫자, 기호를 각 리스트에 넣습니다
print("Welcome to the PyPassword Generator!")
nr_letters= int(input("How many letters would you like in your password?\n")) #문자열 몇자리?
nr_symbols = int(input(f"How many symbols would you like?\n")) #기호 몇자리?
nr_numbers = int(input(f"How many numbers would you like?\n")) #숫자 몇자리?

#먼저 문자4자리, 숫자 2자리, 기호2자리를 넣어보겠습니다
password = "" #패스워드 저장을 위해 "" 선언합니다
for i in range(1, nr_letters + 1): #i는 1부터 문자열 자리수 +1
  password += random.choice(letters) #choice함수를 이용해 letters 리스트에서 랜덤으로 선택

for i in range(1, nr_symbols + 1): #i는 1부터 기호 자리수 +1
  password += random.choice(symbols) #choice함수를 이용해 symbols 리스트에서 랜덤으로 선택

for i in range(1, nr_numbers + 1): #i는 1부터 숫자 자리수 +1
  password += random.choice(numbers) #choice함수를 이용해 numbers 리스트에서 랜덤으로 선택

print(password) #위 for문의 선택된 문자열, 기호, 숫자를 출력합니다

#이번에는 위 출력된 패스워드를 섞어서 출력합니다

password_list = [] #선택된 문자, 숫자,기호를 섞기 위해 리스트 작업

for i in range(1, nr_letters + 1): #i는 1부터 기호 자리수 +1
    password_list.append(random.choice(letters)) #append 함수를 이용해 리스트에 추가

for i in range(1, nr_symbols + 1): #i는 1부터 기호 자리수 +1
    password_list.append(random.choice(symbols)) #append 함수를 이용해 리스트에 추가

for i in range(1, nr_numbers + 1): #i는 1부터 기호 자리수 +1
    password_list.append(random.choice(numbers)) #append 함수를 이용해 리스트에 추가
print(password_list) #위 for문의 선택된 문자열, 기호, 숫자를 출력합니다
random.shuffle(password_list) #선택된 문자,기호,숫자를 리스트 안에서 랜덤으로 순서를 섞습니다
print(password_list) # 위 섞은 리스트를 출력.

password = "" #리스트를 다시 ""로 변환합니다
for char in password_list: #리스트 범위에서 임의의 변수 char에 넣습니다
    password += char #임의의 변수에 저장된 password_list를 다시 password에 넣습니다
print(f"password is {password}")#패스워드는 {password} 입니다

식이 조금 길어 보일 수 있는데 letters, numbers, symbols 리스트에 사용할 문자를 넣은 후

for 문을 이용해 random.randint함수를 이용해 랜덤으로 선택된 문자들을 password에 저장 후 출력합니다.

 

여기서 나아가 password에 저장된 ""를 리스트로 변환 후 

 

 shuffle 함수를 이용해 리스트 내에서 섞은 후 다시 ""로 변환합니다.

 

사실 위 코드에서 shuffle 함수를 사용하지 않는다면 짧게 만들 수도 있는데요

 

이상으로 password을 랜덤으로 생성하는 프로그램을 만들어 보았습니다 !

 

Comments