난수에서 생성 된 임의의 문자 목록을 만들어야합니다. 하나의 목록은 임의의 숫자에서 생성 된 문자 여야하고 다른 목록은 이미 첫 번째 목록에있는 문자를 가져옵니다. ascii를 사용하는 가져 오기 문자열 방법을 보았지만 완전히 이해하지 못했습니다. 지금까지 난수 가져 오기 방법을 사용했고 난수를 생성 할 수 있었지만 코드가 너무 길고 더 쉬운 방법이 있어야한다고 생각합니다. 임의의 숫자가 생성 될 때마다 프로그램은 숫자를 문자로 변환하고 해당 숫자가 목록에 아직없는 경우에만 목록 (uniqueList라고 함)에 추가해야합니다. 목록에 15자가 포함되면 숫자 추가를 중지합니다.
지금까지 가지고있는 코드 샘플은 다음과 같습니다.
uniqueList = []
excludedList = []
count = 0
while (len(uniqueList)<15):
randomNumber = random.randint(*random.choice([(65,90), (97,122)]))
print(randomNumber)
if(randomNumber == 65):
letter = 'A'
if(randomNumber == 66):
letter = 'B'
if(randomNumber == 67):
letter = 'C'
if(randomNumber == 68):
letter = 'D'
if(randomNumber == 69):
letter = 'E'
if(randomNumber == 70):
코드가 길다는 것을 알 수 있으므로 더 짧은 방법이 있어야 함을 알 수 있습니다.
random 만 필요하면 다음 과 같이 letter
사용하여 논리를 단순화 할 수 있습니다 random.choice()
.
import string
import random
my_char = string.letters
random.choice(my_char)
# returns 'z'
경우 string.letters
즉, 모든 문자의 문자열을 반환합니다'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
다음은 코드 논리 ( random.choice()
난수 사용) 를 기반으로 수정 된 코드입니다 .
import string
import random
my_char = string.letters
# Value returned by string.letters:
# 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
randomNumber = random.randint(*random.choice([(65,90), (97,122)]))
if randomNumber >=65 and randomNumber <=90:
print my_char[randomNumber-65]
elif randomNumber >=97 and randomNumber <=122:
print my_char[randomNumber-97+26]
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다