所以我的代码得到两个单词,并检查一个是否是另一个单词的字谜。
但如果交换了多个字母,则无效,但我试图解释这一点。
storedword = input("Enter your primary word \t")
global word
word = list(storedword)
word3 = input("Enter anagram word \t")
word3lowercase = word3.lower()
anaw = list(word3lowercase)
counter = int(0)
letterchecker = int(0)
listlength = len(word)
newcounter = int(0)
if len(anaw) != len(word):
print ("not anagram")
if len(anaw) == len(word):
while counter < listlength and newcounter < listlength:
tempcount = 0
if anaw[counter] == word[newcounter]:
temp = word[newcounter]
word[newcounter] = word[tempcount]
word[tempcount]=temp
letterchecker +=1
counter +=1
tempcount +=1
newcounter = int(0)
else:
newcounter +=1
if counter == len(word):
print ("anagram")
else:
print ("not anagram")
我认为在if len(anaw)
部分之后出现了错误,例如,如果主要单词是“hannah”,次要单词是“hannnn”,则认为它是一个字谜。
答案 0 :(得分:3)
即使不使用sorted
等,也可以在此处实现更简单的逻辑。假设你有一个函数anagram
:
def anagram(word1, word2):
if len(word1) != len(word2):
return False
def char_count(word):
char_count = {}
for c in word:
char_count[c] = char_count.get(c, 0) + 1
return char_count
cr1 = char_count(word1)
cr2 = char_count(word2)
return cr1 == cr2
你可以用以下方法测试:
>>> print(anagram("anagram", "aanragm"))
True
>>> print(anagram("anagram", "aangtfragm"))
False
对于未来的读者,一个超级简单的pythonic解决方案可能正在使用Counter
:
from collections import Counter
>>> Counter(word1) == Counter(word2)
或使用sorted
:
>>> sorted(word1) == sorted(word2)
答案 1 :(得分:0)
newcounter = int(0)
这是引起麻烦的行(在while循环中)。
因此,你开始再次从头开始检查单词。
我想你希望它是newcounter=letterchecker
。
由于已经使用的字符放在word
的前面,如果你从letterchecker
告诉我它是否有效
编辑:使用给出的示例进行检查,似乎有效。
答案 2 :(得分:0)
不使用sort
,您可以使用以下方法。它从第二个单词的字符数组中删除一个字母。如果没有剩下的字母,这些单词只是字谜(而且单词长度相同,长度大于零):
word1="hannah"
word2="nahpan"
chars1= list(word1)
chars2= list(word2)
if len(chars1)==len(chars2) and len(chars1)>0:
for char in chars1:
if char not in chars2:
break
chars2.remove(char)
if len(chars2)==0:
print "Both words are anagrams"
else:
print "Words are not anagrams"
答案 3 :(得分:-2)
[编辑这只是我无法阅读的PALINDROMES]
这里有点简单:
storedword = input("Enter your primary word \t")
word3 = input("Enter anagram word \t")
if storedword == word3[::-1]:
print "Is Anagram"
else:
print "Is not anagram"