'''创建一个字符串的随机七巧板。使用choice方法创建一个字符串的5个随机字谜。
预期结果:由'CREATE
'的每个字符组成的字母组合。
Output :
Anagram# 1: taeecr
Anagram# 2: aaaete
Anagram# 3: acteet
Anagram# 4: rcrcee
Anagram# 5: aeerca
'''
from random import choice
Orig = 'create'
OrigL = list(Orig)
AnagL = []
for a in range(5):
AnagL = []
for i in range(len(Orig)):
p = choice(OrigL)
AnagL.append(p)
Anag = ''.join(AnagL)
print('Orig#',a+1,Orig)
print('Anag#',a+1,Anag,'\n')
尝试以下类似操作,但不使用random.choice
:
list
因此:
from random import shuffle
word = list('create')
for i in range(5):
shuffle(word)
print("Anagram #{}: {}".format(i+1, "".join(word)))
Anagram #1: aeetrc
Anagram #2: rcteea
Anagram #3: eertca
Anagram #4: tceear
Anagram #5: erecat
使用random.choice
:
list
random.choice
从列表中获得随机的索引from random import choice
Orig = 'create'
OrigL = list(Orig)
AnagL = []
for a in range(5):
AnagL = []
notAnal=Orig
for i in range(len(notAnal)):
p = choice(notAnal)
notAnal=notAnal.replace(p,'',1)
AnagL.append(p)
Anag = ''.join(AnagL)
print('Orig#',a+1,Orig)
print('Anag#',a+1,Anag,'\n')
如果字符串不大,则可以使用itertools进行操作:
import itertools
import random
WORD = "CREATE"
COMBS = list(itertools.permutations(WORD))
for idx in range(5):
print(f'Anagram #{idx}: {"".join(random.choice(COMBS))}')
样本输出:
Anagram #0: EETCAR
Anagram #1: ECTREA
Anagram #2: AEECRT
Anagram #3: ERTCEA
Anagram #4: AEECTR
from numpy.random import choice
s = "CREATE"
anagram_array = choice(list(s), size=len(s), replace=False)
anagram = "".join(list(anagram_array))
[注意,您可以用任何其他表达式替换size=len(s)
,以获得从原始字符串生成的其他类型的字符串。我还建议代码清晰,如果您必须使用choice
,请使用shuffle。
如果您的numpy版本已更新,请不要使用choice
,而是通过创建RNG对象并使用其选择功能来使用新的API:
from numpy.random import default_rng
rng = default_rng()
anagram = rng.choice(...)