2017-09-29 1 views
0

암호 생성기를 만들려고합니다. 나는 모든 숫자와 문자를 포함하는 목록을 만들었습니다. 모든 목록을 하나의 큰 목록에 추가하고 각 위치의 임의 목록에서 무작위로 선택하려고합니다.목록 안의 목록을 임의로 선택 함

def generator(): 
    password=['','','','','','','','','','',''] 
    symbols=['£','$','%','^','&','*','_'] 
    numbers=[0,1,2,3,4,5,6,7,8,9] 
    letter=['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'] 
    Uletter=['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'] 
    password[0]=random.choice(numbers) 
    password[1]=random.choice(numbers) 
    password[2]=random.choice(numbers) 
    password[3]=random.choice(numbers) 
    password[4]=random.choice(numbers) 
    password[5]=random.choice(numbers) 
    password[6]=random.choice(numbers) 
    password[7]=random.choice(numbers) 
    password[8]=random.choice(numbers) 
    password[9]=random.choice(numbers) 
    password[10]=random.choice(numbers) 
    print(password) 

은 내가 각 슬롯 random.choice (숫자)를 가지고 있지만이 바로 지금은 발전기 작동을 얻을 때까지 시간을 절약을 위해 것을 알고있다. numbers의 요소가, 문자열 정수되지 않기 때문에 당신이

+0

저는 여러분이 새로운 개발자라고 생각합니다. 따라서 가장 좋은 조언은 이것이 문자열을 생성하는 방법이 아니라는 것입니다. 좀 더 전문적인 솔루션을 얻으려면 다음 답을 읽어보십시오. https://stackoverflow.com/a/2257449/3767514 – Yarimi

+1

저는 새롭고 임의의 문자열과 정수를 생성하는 것에 대해 알고 있습니다. 모든 목록을 하나의 큰 목록에 추가하려는 이유는 각 슬롯이 숫자 또는 정수 일 필요가 없기 때문입니다. 그렇게하면 각 슬롯이 숫자, 문자 또는 기호이므로 암호를 쉽게 예측할 수 있습니다. 각 슬롯을 순전히 무작위로 만들면 슬롯이 숫자, 문자 또는 기호인지 여부에 대한 실제 패턴이 없습니다. 나는 그것을하는 더 좋은 방법이 있다는 것을 알고 있습니다, 나는 단지 그것을 간단한 방법으로 끝내려고 노력하고 있습니다. –

+1

_ "모든 목록을 하나의 큰 목록에 추가하고 싶습니다."_. 그건 좋은 아이디어 같아. 그런 다음'choice'를 사용하여 목록의 목록을 가져올 수 있으며,'choice'를 사용하여 문자를 얻을 수 있습니다. 그 방법을 시도해보십시오. – Kevin

답변

0
all_chars = symbols + numbers + letter + Uletter 
password = ''.join(str(random.choice(all_chars)) for i in range(11)) 

참고 str()를 포함합니다.

0

나는 일반적으로 @Kerricks 답을 가고 싶어하지만, 몇 가지 다른, 약간 긴, 옵션을 표시 :

import random 
import string 

numbers = [str(x) for x in range(10)] 
lower_case_letters = [x for x in string.lowercase] 
upper_case_letters = [x for x in string.uppercase] 
symbols = ['$', '%', '^', '&', '*', '_'] 

all_chars = numbers + lower_case_letters + upper_case_letters + symbols 

password = '' 

for x in range(11): 
    password += random.choice(all_chars) 

print(password) 

이 숫자의 목록을 생성하는 방법을 보여줍니다은 문자열로 변환. strings 라이브러리를 사용하여 대문자 및 소문자를 얻는 방법, 목록을 연결하는 방법 및 random.choice을 사용하여 전체 all_chars 목록에서 임의의 선택을 선택하는 방법 HTH.

아, 그런데 :하지 마세요. 실제와 같이 암호를 생성하지 마세요. 부디.

+0

질문 주석에서 언급했듯이,'random.choice'는 행복하게 문자열을 arg로 받아 들일 것이므로, 그리스트를 만들 필요가 없습니다.그러나 문자열의 문자에서 목록을 만들려는 경우 루프를 사용할 필요가 없습니다. 문자열을'list' 생성자에 전달할 수 있습니다 (예 :'list (string.ascii_letters)'). –

관련 문제