我需要创建一个随机数生成的随机字符列表。一个列表必须是从随机数生成的字母,而另一个列表将获得已在第一个列表中的字母。我见过使用ascii的import string方法,但我不完全理解。到目前为止,我已经使用了导入随机方法,并且能够生成随机数,但我觉得我的代码太长了,应该有一个更简单的方法。 每次生成随机数时,程序都应将其转换为字母并添加到列表中(称为 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):
你可以告诉代码很长,所以我知道必须有一个更短的方式
答案 0 :(得分:2)
如果您想在列表中添加15个唯一字母,则可以执行以下操作:
import random
import string
letters = [i for i in string.ascii_lowercase]
random_list = random.sample(letters, 15)
print random_list
这将返回以下内容:
['m', 's', 'r', 'f', 'x', 'l', 'e', 't', 'd', 'n', 'w', 'u', 'q', 'h', 'i']
答案 1 :(得分:0)
如果您只需要一个随机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]
答案 2 :(得分:0)
因为c#知道你可以使用的unicode值
letter=(char)randomNumber;
虽然随机使用一个介于97和122之间的数字,但随机使用小写字母。如果你想像你引用的那样随机输入大写字母,请查看unicode表中的大写unicode值。 http://unicode-table.com/en/