如何生成分配给随机数的随机字母列表

时间:2016-10-21 16:39:09

标签: python random integer character

我需要创建一个随机数生成的随机字符列表。一个列表必须是从随机数生成的字母,而另一个列表将获得已在第一个列表中的字母。我见过使用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):

你可以告诉代码很长,所以我知道必须有一个更短的方式

3 个答案:

答案 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/