Python 3 - 使用.count()嵌套for循环以检查单词

时间:2015-12-18 12:36:15

标签: python anagram

我在这里要求一个单词,并为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循环起作用时,我们非常感谢您的帮助。

1 个答案:

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