我在这里要求一个单词,并为word
变量中的字母生成所有组合的列表,理论上(在我的脑海中)for循环{{1}声明应该工作。
if
该程序的目的是列出输入单词中的所有有效字谜 - 并检查它只包含from itertools import product
from string import ascii_lowercase
word = input("Enter a word, preferably short")
PossibleWithWordLetters = [''.join(i) for i in product(word, repeat = len(word))]
for a in PossibleWithWordLetters:
if word.count(word[i]) [for i in range(len(word))] == 1 and a in PossibleWithWordLetters:
print(a)
中每个字母中的一个字母 - 然后我将针对单词文件进行检查真实的话语 - 我还没有完成。
在让word
循环起作用时,我们非常感谢您的帮助。
答案 0 :(得分:0)
说实话,我并不完全理解你的问题,但看起来你正试图生成一个单词的字谜,这是字符的排列 。 不需要对字母进行计数,因为python可以直接生成排列:
from itertools import permutations
from string import ascii_lowercase
word = input("Enter a word, preferably short: ")
PossibleWithWordLetters = [''.join(i) for i in permutations(word)]
for a in PossibleWithWordLetters:
print(a)
如果你想检查两个刻字是否是彼此的字谜,这里有一些例子:
# using string.count
def check_anagram1(a, b):
return all(a.count(c) == b.count(c) for c in set(a) | set(b))
# using collections.Counter
from collections import Counter
def check_anagram2(a, b):
return Counter(a) == Counter(b)