我编写了一个返回长度为n
的随机字符串的函数。
import string, random
def randomString(N):
return ''.join(random.sample(string.ascii_lowercase + ' ', N))
但是,这只会返回一个字符串,其中包含每个字母/空格之一。我需要一个随机数字小写字母和空格的字符串(字符可以重复)。
我尝试在.join方法中添加另一个参数,并返回语法错误。
如何更改此功能以产生随机数量的字母和空格?
答案 0 :(得分:2)
您正在寻找random.choice
import string, random
def randomString(N):
return ''.join(random.choice(string.ascii_lowercase + ' ') for i in range(N))
答案 1 :(得分:1)
from random import choice
from string import ascii_lowercase
# vary the number of spaces appended to adjust the probability
chars = ascii_lowercase + " " * 10
def random_string(n):
return "".join(choice(chars) for _ in range(n))
然后
>>> print(random_string(15))
fhr qhay nuf u
与空格数一样,您可以调整每个字符出现的次数以更改其相对概率:
chars = (
' !,,,,,--....'
'.....:;aaaaaaaaaaaaaaaaaaaaabbbbbcccccccccdddddddddeeeeeeeee'
'eeeeeeeeeeeeeeeeeeeefffffggggghhhhhhhhhiiiiiiiiiiiiiiiiiiijj'
'klllllllllmmmmmmnnnnnnnnnnnnnnnnnnooooooooooooooooppppppwrrr'
'rrrrrrrrrrrrrssssssssssssssssttttttttttttttttttttuuuuuuuvvvw'
'wwxyyyyz'
)
for _ in range(5):
print(random_string(30))
给出
sxh ehredi clo-ioodmttlpoir.wo
ijr thc -o,iepe.pcicfrn.osui.a
et rtl teektet rrecyd.d .bate
aji ueava hahe arv tgnrnt eecs
a ne:tudsdu,nlnhbeirp,oioitt e
答案 2 :(得分:0)
您可以通过一个简单的循环轻松完成此操作,使用random.choice
而不是random.sample
一次完成所有操作:
>>> import string, random
>>> def random_string(n):
... count = 0
... s = ''
... while count < n:
... s += random.choice(string.ascii_lowercase + ' ')
... count += 1
... return s
...
>>> random_string(27)
'amwq frutj nq dbotgllrbmhnj'
>>> random_string(27)
'khjnmhvgzycqm vyjqcttybuqm '
>>> random_string(27)
'ssakcpeesfe kton gigblmgo o'