在 python 中随机生成字母

Randomly Generate Letters in python

我想生成 10 个唯一的英文字母并将它们附加到 Python 中的列表。

这是我试过的:

for i in range(10):
    rand = random.choice(string.ascii_letters)
    print(rand)
import numpy as np
n = 10

letterlist = [chr(i) for i in np.random.randint(ord('a'), ord('z') + 1, n)]
print (letterlist)

您需要同时导入随机库和字符串库。 并使用 'list'

类型的变量

import random
import string 

ls=[]

for i in range(10):
    rand = random.choice(string.ascii_letters)
    ls.append(rand)
    
print(ls)

这就是代码的样子..

有很多好的方法可以做到这一点,我相信人们会因为缺乏对您的方法失败原因的解释而对您的问题投反对票。我也看到了很多导入和库,但这是一个非常简单的问题,可以以非常普通的方式回答,只需随机导入即可。

import random

##define the list to keep valid letters in
letters = []
##add all letters between A and Z, capital, +1 because range isn't end inclusive
for i in range(ord('A'),ord('Z')+1):
    letters.append(chr(i))
##same but for lowercase letters
for i in range(ord('a'),ord('z')+1):
    letters.append(chr(i))

##returns a random string of n characters
def n_string(n):
    result = ""
    for i in range(0,n):
        ##picks a random spot in the letters list, randrange IS end inclusive
        spot = random.randrange(0,len(letters)-1)
        result += letters[spot]
    return result

print(n_string(10))

这只是一种方法,看看你能不能想出任何优化方法或不同的方法。

(提示,尝试跳过字母生成,只创建一个介于 ASCII A (65) 和 ASCII A + 52(所有大小写字母的计数)之间的数字。如果该数字大于 90 ( Z), 给它加上一些东西使它变成小写字母。)

这也可以是答案:

import random
import string

ls = []
while len(ls) !=10:
    rand = random.choice(string.ascii_letters)
    rand =rand.lower()
    if rand not in ls:
        ls.append(rand)

因为这确实得到了重复的字母表。此代码获得一个随机的唯一 10 个字母