测试一个单词是否是一个字谜并输出一个布尔值
To test if a word is an anagram and output a boolean
我是一个完全的编程初学者,我正在尝试编写代码来检查一个单词是否是一个输出必须是布尔值的变位词。
当我 运行 代码时,变位词列表将包括列表中第一个最初输入的单词,即如果它是变位词,或者如果不是则仅包含输入的词。然后它 return 是最后一个 return 值,即使它应该是 False。
def find_anagrams(words):
from iterools import permutations
import enchant
d = enchant.Dict("en_GB")
any_word = ("Enter a word /n")
inp = any_word
lettr = (x.lower() for x in inp)
for y in list(permutations(lettr)):
z = "" join(y)
if d.check(z):
print(z)
if z == inp:
return False
else:
return True
print(find_anagrams("word"))
以下是检查附魔词典中一个词是否为另一个词的变位词的方法:
from itertools import permutations
import enchant
d = enchant.Dict("en_GB")
any_word = input("Enter a word \n")
inp = any_word
lettr = [x.lower() for x in inp]
for y in permutations(lettr):
z = "".join(y)
if d.check(z) and z != inp:
print(True)
break
else:
print(False)
测试运行 #1:
Enter a word
bat
输出:
True
测试运行 #2:
Enter a word
good
输出:
False
首先,您的代码有错别字:
z = "" join(y)
any_word = ("Enter a word /n")
可能应该是:
z = "".join(y)
any_word = ("Enter a word\n")
它的逻辑不正确,正如@AnnZen 和@furas 指出的那样 (+1)。如果您希望您的函数成为 returns True
或 False
的谓词,我将以这种方式构建您的代码:
from itertools import permutations
import enchant
def is_anagram(letters):
for permutation in permutations(letters.lower()):
word = "".join(permutation)
if word == letters:
continue
if dictionary.check(word):
return True
return False
dictionary = enchant.Dict("en_GB")
any_word = input("Enter a word\n")
print(is_anagram(any_word))
以下是如何使用 enchant 获取特定单词的字谜列表。
import enchant
from itertools import permutations
ED = enchant.Dict("en_GB")
def get_anagrams(word):
wset = {word}
for wtc in map(''.join, permutations(word)):
if not wtc in wset and ED.check(wtc):
wset.add(wtc)
wset.remove(word)
return list(wset)
print(get_anagrams('steam'))
输出:
['tames', 'mates', 'meats', 'teams']
我是一个完全的编程初学者,我正在尝试编写代码来检查一个单词是否是一个输出必须是布尔值的变位词。 当我 运行 代码时,变位词列表将包括列表中第一个最初输入的单词,即如果它是变位词,或者如果不是则仅包含输入的词。然后它 return 是最后一个 return 值,即使它应该是 False。
def find_anagrams(words):
from iterools import permutations
import enchant
d = enchant.Dict("en_GB")
any_word = ("Enter a word /n")
inp = any_word
lettr = (x.lower() for x in inp)
for y in list(permutations(lettr)):
z = "" join(y)
if d.check(z):
print(z)
if z == inp:
return False
else:
return True
print(find_anagrams("word"))
以下是检查附魔词典中一个词是否为另一个词的变位词的方法:
from itertools import permutations
import enchant
d = enchant.Dict("en_GB")
any_word = input("Enter a word \n")
inp = any_word
lettr = [x.lower() for x in inp]
for y in permutations(lettr):
z = "".join(y)
if d.check(z) and z != inp:
print(True)
break
else:
print(False)
测试运行 #1:
Enter a word
bat
输出:
True
测试运行 #2:
Enter a word
good
输出:
False
首先,您的代码有错别字:
z = "" join(y)
any_word = ("Enter a word /n")
可能应该是:
z = "".join(y)
any_word = ("Enter a word\n")
它的逻辑不正确,正如@AnnZen 和@furas 指出的那样 (+1)。如果您希望您的函数成为 returns True
或 False
的谓词,我将以这种方式构建您的代码:
from itertools import permutations
import enchant
def is_anagram(letters):
for permutation in permutations(letters.lower()):
word = "".join(permutation)
if word == letters:
continue
if dictionary.check(word):
return True
return False
dictionary = enchant.Dict("en_GB")
any_word = input("Enter a word\n")
print(is_anagram(any_word))
以下是如何使用 enchant 获取特定单词的字谜列表。
import enchant
from itertools import permutations
ED = enchant.Dict("en_GB")
def get_anagrams(word):
wset = {word}
for wtc in map(''.join, permutations(word)):
if not wtc in wset and ED.check(wtc):
wset.add(wtc)
wset.remove(word)
return list(wset)
print(get_anagrams('steam'))
输出:
['tames', 'mates', 'meats', 'teams']