如何使用给定函数传递多个字符串

2024-06-28 11:22:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个函数randStr,它可以输出一个带有N个字符的随机字符串

def randStr(chars = string.ascii_uppercase + string.digits, N=4):
    return ''.join(random.choice(chars) for _ in range(N))

如何使它返回1000个这些随机且唯一的小字符串


Tags: 函数字符串forstringreturndefasciirandom
2条回答

与@black raven的答案相同,但具有更有效的唯一性检查
请注意,对保证唯一的字符串使用set结构

import string
import random

def randStr(chars = string.ascii_uppercase + string.digits, N=4):
    return ''.join(random.choice(chars) for _ in range(N))

strings = set()
while len(strings) != 1000:
    newString = randStr('asdf')
    strings.add(newString)
strings = list(strings)

(编辑:添加唯一性检查)

您可以使用while-loop进行迭代,直到得到1000个唯一的单词。请注意,输入字符串的长度必须至少为8个字符。使用Permutations Calculator、7P4=840、8P4=1680以及9P4之后的值进行检查时,值大于该值

import string
import random

def randStr(chars = string.ascii_uppercase + string.digits, N=4):
    return ''.join(random.choice(chars) for _ in range(N))

unique_words = []
while len(unique_words) < 1000:
    result = randStr('abcdefgh')
    if result not in unique_words:
        unique_words.append(result)
        print(result, end=', ')
print(len(unique_words))

输出:

cfae, gbca, fgfe, bdhg, decd, gcha, ddgc, babd, bggb, eghe, eeca, ebch, fbec, bgbe, gbbc, dgda, efec, hccd, bgfh, gdbf, ecac, edhd, cfdg, eacf, dgaa, heeb, 
...
egbb, cbed, eefg, gdec, dgcg, cgag, fadc, effe, dahg, fhdb, 1000

相关问题 更多 >