Python故障中输入的字谜生成器

Posted

技术标签:

【中文标题】Python故障中输入的字谜生成器【英文标题】:Anagram generator from input in Python malfunction 【发布时间】:2016-04-22 08:04:55 【问题描述】:

我尝试从输入中编写一个简单的字谜列表生成器。但是在我重写代码后,它只给了我 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])

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

【问题讨论】:

这是因为在 while 循环中你永远不会增加f,所以你总是打印j[0]。另外,为什么不遍历 for i in j: print(i) 之类的项目? 我真的是编程新手,我只知道基础知识@reti43 【参考方案1】:

据我所知,您最后不会增加 f 。 不如这样做:

for item in j:
   print( item )

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

【讨论】:

【参考方案2】:

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

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))

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

【讨论】:

感谢你们,@phev8 对“字谜”感到抱歉,这只是 xp 中的一个单词扰频器。我将不得不花费大量时间来理解这段代码

以上是关于Python故障中输入的字谜生成器的主要内容,如果未能解决你的问题,请参考以下文章

拼字游戏字谜生成器

Python - 递归字谜函数

字词字谜生成器

为所有字谜生成相同的唯一哈希码

Ruby 字谜求解器 [关闭]

检查需要删除多少个字符才能在 Python 中生成字谜