来自Python输入的Anagram生成器故障

时间:2016-01-16 22:37:31

标签: python loops random anagram

我尝试从输入中编码一个简单的anagrams列表生成器。但在我重写代码后,它只给了我2个输出。这是代码

import random
item=input("Name? ")
a=''
b=''
oo=0
while oo<=(len(item)*len(item)):
    a=''.join([str(y) for y in random.sample(item, len(item))]) #this line was found on this site
    b=''.join([str(w) for w in random.sample(item, len(item))]) #because in no way i had success in doing it by myself
    j=[]
    j.append(a) #During the loop it should add the anagrams generated
    j.append(b) #everytime the loop repeats itself
    oo=oo+1
j=list(set(j)) #To cancel duplicates
h=len(j)
f=0
while f<=(h-1):
    print(j[f])

但它给出的输出只是一个anagram重复的字谜。

2 个答案:

答案 0 :(得分:0)

据我所知,你不会在最后增加f。 这样做很喜欢:

for item in j:
   print( item )

另一件事是,你在每个循环中覆盖j。你确定你想要那样吗?

答案 1 :(得分:0)

您的循环构造存在一些问题,包括每次重新初始化您的结果。尝试一种更简单的方法,即事物已经是他们想要的类型而不是不断转换。并非你想做的一切都需要循环:

import random

item = input("Name? ")

length = len(item)

anagrams = set()

for repetitions in range(length**2):
    anagrams.add(''.join(random.sample(item, length)))

print("\n".join(anagrams))

然而,这些字谜并非详尽无遗(这意味着一些人的随机性将被遗漏。)而且他们并不是真正的字谜,因为没有字典可以帮助生成实际的单词,只是随机字母。